Значение общедоступной статической переменной
Я пытаюсь объявить общедоступную статическую переменную, которая представляет собой массив массивов:
class Foo{
public static $contexts = array(
'a' => array(
'aa' => something('aa'),
'bb' => something('bb'),
),
'b' => array(
'aa' => something('aa'),
'bb' => something('bb'),
),
);
// methods here
}
function something($s){
return ...
}
Но я получаю ошибку:
Ошибка синтаксического анализа: ошибка синтаксического анализа, ожидающая `) "в...
1 answers
Вы не можете использовать выражения при объявлении свойств класса. Т.е. вы не можете вызывать something()
здесь, вы можете использовать только статические значения. В какой-то момент вам придется установить эти значения по-другому в коде.
Как и любая другая статическая переменная PHP, статические свойства могут быть инициализированы только с помощью литерала или константы; выражения не допускаются. Таким образом, хотя вы можете инициализировать статическое свойство целым числом или массивом (например), вы не можете инициализировать его другой переменной, например функция возвращает значение или объекту.
Например:
class Foo {
public static $bar = null;
public static function init() {
self::$bar = array(...);
}
}
Foo::init();
Или сделайте это в __construct
, если вы собираетесь создать экземпляр класса.