Кто-нибудь знает техническую причину, по которой это ограничение накладывается на классы PHP (по крайней мере, в v5.1x)?
Массивы являются переменными - вы можете изменить их. Вместо этого вы можете использовать статическое свойство.
Константы не могут содержать изменяемые типы. Константа - это «переменная», которую нельзя изменить; ему нельзя присвоить, но если бы его значение было изменчивым, то его можно изменить, просто изменив значение:
class SomeClass { public const $array = array(0 => 'foo', 1 => 'bar'); public static function someFunction() { self::$array[0] = 'baz'; // SomeClass::$array has now changed. } }
Не знаю точно, почему, но вы можете инициализировать переменную статического массива:
class myClass { public static $arr = Array ('foo', 'bar'); }
Обратите внимание, что массивы являются переменными, поэтому вы можете изменять их снаружи ...