Какова техническая причина, почему константы классов не могут быть массивами в PHP? - PullRequest
1 голос
/ 24 января 2010

Кто-нибудь знает техническую причину, по которой это ограничение накладывается на классы PHP (по крайней мере, в v5.1x)?

Ответы [ 3 ]

5 голосов
/ 24 января 2010

Массивы являются переменными - вы можете изменить их. Вместо этого вы можете использовать статическое свойство.

2 голосов
/ 24 января 2010

Константы не могут содержать изменяемые типы. Константа - это «переменная», которую нельзя изменить; ему нельзя присвоить, но если бы его значение было изменчивым, то его можно изменить, просто изменив значение:

class SomeClass
{
    public const $array = array(0 => 'foo', 1 => 'bar');

    public static function someFunction()
    {
        self::$array[0] = 'baz'; // SomeClass::$array has now changed.
    }
}
0 голосов
/ 24 января 2010

Не знаю точно, почему, но вы можете инициализировать переменную статического массива:

class myClass {
   public static $arr = Array ('foo', 'bar'); 
}

Обратите внимание, что массивы являются переменными, поэтому вы можете изменять их снаружи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...