Можно ли определить статические переменные класса PHP с помощью функций?
Создание класса с такими переменными отлично работает:
class Example {
public static $example = array('simple', 'example');
// ...
}
Но, если я использую функцию, при определении переменной я получаю ошибку unexpected '(', expecting ')'
:
class Example {
public static $example = explode(' ', 'simple example');
// ...
}
Я попробовал это без ключевого слова static
и все равно получил ту же ошибку. Можно ли использовать функции при таком определении переменных класса? Какова альтернатива?
3 answers
Массив на самом деле не функция, а оператор литерал, поэтому он работает. Чтобы использовать функцию, просто сделайте это с помощью установщика или внешнего по отношению к классу:
class Example {
public static $example = null;
// ...
public static function setE($val) {
self::$example = $val;
}
}
Example::$example = explode(' ', 'simple example');
// or
Example::setE(explode(' ', 'nudder example'));
В соответствии с документация ( курсив мой):
Как и любая другая статическая переменная PHP, статические свойства могут быть инициализированы только с использованием литерала или константы; выражения не допускаются. Поэтому, хотя вы можете инициализировать статическое свойство целым числом или массивом (например), вы не можете инициализировать его для другой переменной, возвращаемого значения функции или объекта.
Вы должны быть в состоянии сделать следующее,
Публичный статический $пример = новый массив ("простой", "пример");