Я пытаюсь объявить публичную статическую переменную, которая представляет собой массив массивов:
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 ... }
Но я получаю сообщение об ошибке:
Ошибка анализа: ошибка синтаксического анализа, ожидающая `')' 'в …
Вы не можете использовать выражения при объявлении свойств класса. Т.е. вы не можете назвать something()
здесь, вы можете использовать только статические значения. В какой-то момент вам придется устанавливать эти значения по-разному.
Как и любая другая статическая переменная PHP, статические свойства могут быть инициализированы только с использованием литерала или константы; выражения не допускаются. Поэтому, хотя вы можете инициализировать статическое свойство для целого или массива (например), вы не можете инициализировать его другой переменной, возвращаемым значением функции или объектом.
Например:
class Foo { public static $bar = null; public static function init() { self::$bar = array(...); } } Foo::init();
Или сделайте это в __construct
если вы собираетесь создавать экземпляр класса.