Использовать функцию PHP time() в классе

#php #time

#php #время

Вопрос:

Это, безусловно, очень простой вопрос, но, похоже, я нигде не могу найти ответа. Я пишу класс PHP, который должен знать текущее время.

Этот код работает:

 class className{
    private $currentTime = 1475607467;
[...]
}
  

Этот код не:

 class className{
    private $currentTime = time();
[...]
}
  

Что дает? Поскольку «time ()» возвращает одно и то же 10-значное число, разве они не должны быть эквивалентными?

Комментарии:

1. Каким образом это не работает?

2. Вы пробовали устанавливать переменную в конструкторе, а не встраивать ее?

3. Объявления свойств могут быть только постоянными значениями, а не выражениями. Используйте конструктор.

4. @mario: выражения разрешены в последних версиях PHP, но только те, которые могут быть ПОЛНОСТЬЮ оценены во время компиляции. $currentTime = 1 1 это выражение, но оно допустимо. = time() нет, потому что это значение не может быть удовлетворено во время компиляции. хотя PHP МОЖЕТ вызывать time() и экономить время компиляции, это почти наверняка не то, что ожидает код — им нужно «время на выполнение», а не «время на компиляцию».

Ответ №1:

Я предлагаю вам заполнить это свойство в конструкторе:

 class className
{

    private $currentTime;

    public function __construct()
    {
        $this->currentTime = time();
    }

    [...]
}
  

Не торопитесь и внимательно прочитайте этот раздел документации PHP о свойствах класса. Это сэкономит вам много времени в будущем.

Ответ №2:

Как уже указывал Марио, вы не можете объявить свойство с помощью выражения. Таким образом, вы можете использовать функцию construct для инициализации свойств класса:

 class className{

    private $currentTime;

    public function __construct()
    {
        $this->currentTime = time();
    }
    [...]
}
  

Ответ №3:

Попробуйте это:

 Class className
{
    private $currentTime;
    Function __construct()
    {
         $this-> currentTime = time();
    }
 }