#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();
}
}