Согласно документации PHP, можно инициализировать свойства в классах со следующим ограничением:
«Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки».
Я пытаюсь инициализировать массив и возникают некоторые проблемы. Пока это работает нормально:
public $var = array(
1 => 4,
2 => 5,
);
Это создает синтаксическую ошибку:
public $var = array(
1 => 4,
2 => (4+1),
);
Даже это не принято:
public $var = 4+1;
, что говорит о том, что это не ограничение языковой конструкции array ().
Теперь, когда я в последний раз проверял, «4 + 1» приравнивается к постоянному значению, которое не только должно приниматься, но и фактически должно быть оптимизировано. В любом случае, он, безусловно, может быть оценен во время компиляции.
Так что здесь происходит? Действительно ли ограничение по типу «вообще не может быть вычисляемым выражением» по сравнению с любым выражением «можно вычислить во время компиляции»? Использование «оценено» в языке документа предполагает, что простые вычисления разрешены, но увы ....
Если это ошибка в PHP, есть ли у кого-нибудь идентификатор ошибки? Я пытался найти один, но безуспешно.