Intereting Posts
php простой xpath вопрос Создать набор всех возможных совпадений для заданного регулярного выражения Laravel 4 – Не удается поймать исключение базы данных в классе семян или миграции Как я могу завершить реализацию Objective-C декартовой функции продукта? редактирование стандарта форматирования исходного кода NetBeans не удается получить сообщения чата Рассчитать часы назад, используя время сервера в php без какой-либо другой даты Как использовать глобальный тип пространства имен, намекающий внутри класса с именами в PHP 5.3+? Добавление Node.js (для уведомлений в режиме реального времени) к существующему PHP-приложению PHP DOMDocument заменит дочерний элемент DOMElement на строку HTML Загрузите файл из URL с помощью CURL Разбор строки с рекурсивными круглыми скобками Zend_Paginator возвращает объекты проверить соединение с функциями ssh2 в PHP PHP, json_encode, json_decode объекта SimpleXML

Значение общедоступной статической переменной

Я пытаюсь объявить публичную статическую переменную, которая представляет собой массив массивов:

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 ... } 

Но я получаю сообщение об ошибке:

Ошибка анализа: ошибка синтаксического анализа, ожидающая `')' 'в …

Solutions Collecting From Web of "Значение общедоступной статической переменной"

Вы не можете использовать выражения при объявлении свойств класса. Т.е. вы не можете назвать something() здесь, вы можете использовать только статические значения. В какой-то момент вам придется устанавливать эти значения по-разному.

Как и любая другая статическая переменная PHP, статические свойства могут быть инициализированы только с использованием литерала или константы; выражения не допускаются. Поэтому, хотя вы можете инициализировать статическое свойство для целого или массива (например), вы не можете инициализировать его другой переменной, возвращаемым значением функции или объектом.

http://www.php.net/manual/en/language.oop5.static.php

Например:

 class Foo { public static $bar = null; public static function init() { self::$bar = array(...); } } Foo::init(); 

Или сделайте это в __construct если вы собираетесь создавать экземпляр класса.