За последние 24 часа нас посетили 15687 программистов и 1542 робота. Сейчас ищут 852 программиста ...

Проблема с переменными в классе

Тема в разделе "PHP для новичков", создана пользователем mindblaster, 23 окт 2013.

  1. mindblaster

    mindblaster Новичок

    С нами с:
    23 окт 2013
    Сообщения:
    19
    Симпатии:
    0
    Доброго времени суток. Мне нужно создать что-то вроде календаря, куда можно добавлять термины. Так вот я написал один класс, но где-то в нём ошибка в методе toString() или в конструкторе. В общем вот мой код:

    Код (Text):
    1. <?php
    2.     class Termin {
    3.         private $year;
    4.         private $month;
    5.         private $day;
    6.         private $hour;
    7.         private $addhalf;
    8.         private $free;
    9.         private $termin = "";
    10.        
    11.         public function __Termin($year, $month, $day, $hour, $addhalf, $free) {
    12.             $this->year = $year;
    13.             $this->month = $month;
    14.             $this->day = $day;
    15.             $this->hour = $hour;
    16.             $this->addhalf = $addhalf;
    17.             $this->free = $free;
    18.         }
    19.        
    20.         function toString() {
    21.             if ($this->day < 10) {
    22.                 $this->termin .= "0" . (string)$this->day;
    23.             } else {
    24.                 $this->termin .= (string)$this->day;
    25.             }
    26.             $this->termin .= ".";
    27.             if ($this->month < 10) {
    28.                 $this->termin .= "0" . (string)$this->month;
    29.             } else {
    30.                 $this->termin .= (string)$this->month;
    31.             }
    32.             $this->termin .= ".";
    33.             $this->termin .= (string)$this->year;
    34.             $this->termin .= " ";
    35.             if ($this->hour < 10) {
    36.                 $this->termin .= "0";
    37.             }
    38.             $this->termin .= (string)$this->hour;
    39.             $this->termin .= " : ";
    40.             if ($this->addhalf) {
    41.                 $this->termin .= "30";
    42.             } else {
    43.                 $this->termin .= "00";
    44.             }
    45.             return $this->termin;
    46.         }
    47.     }
    48.    
    49.     $t = new Termin(2013, 12, 19, 17, true, true);
    50.     echo ($t->toString());
    51. ?>
    В конце я создаю объект класса Termin. Почему метод toString() выдаёт 0.0. 0 : 00, а не 19.12.2013 17 : 30 ??
    Мне кажется, что переменные не были инициализированы, но ведь объект уже создан. Как так получается, в чём моя ошибка?

    Добавлено спустя 20 минут 39 секунд:
    И заодно вопрос еще один. Нужно ли в методах самого класса обращаться к переменным через this или это лишнее?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    В PHP обязательно.

    Потом, с чего вы взяли, что конструктор должен так странно называться? Начиная с php5, если мне память не изменяет, называется __construct(). У вас просто не инициализируется ваш объект
     
  3. mindblaster

    mindblaster Новичок

    С нами с:
    23 окт 2013
    Сообщения:
    19
    Симпатии:
    0
    Мой конструктор выглядит теперь так:

    Код (Text):
    1. __construct($year, $month, $day, $hour, $addhalf, $free) {
    2.             $this->year = $year;
    3.             $this->month = $month;
    4.             $this->day = $day;
    5.             $this->hour = $hour;
    6.             $this->addhalf = $addhalf;
    7.             $this->free = $free;
    8.         }
    Но это не решило проблему :( Приставку function я тоже вставлял...не идёт
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    рука лицо...
    читайте основы, называть function необязательной приставкой - это сильно.
     
  6. mindblaster

    mindblaster Новичок

    С нами с:
    23 окт 2013
    Сообщения:
    19
    Симпатии:
    0
    Спасибо за помощь! Всё работает уже. Пришлось правда заново всё написать, но это не беда:)