Является ли свойство статического массива невозможным в php?

Ниже мой код в php, и я получаю ошибку:

Ошибка анализа: синтаксическая ошибка, неожиданная '[' в /LR _StaticSettings.php в строке 4

<?php
class StaticSettings{
    function setkey ($key, $value) {
        self::arrErr[$key] = $value; // error in this line
    }
}
?>

Я хочу использовать статически не $this->arrErr[$key], чтобы я мог получать и устанавливать статические свойства без создания экземпляра/объекта.

Почему эта ошибка? Не можем ли мы создать статический массив?

Если есть другой способ, скажите, пожалуйста. Благодаря

Ответ 1

Вам нужно объявить переменную как статическую переменную-член и префикс ее имени знаком доллара, когда вы ссылаетесь на нее:

class StaticSettings{
    private static $arrErr = array();
    function setkey($key,$value){
        self::$arrErr[$key] = $value;
    }
}

Вы должны создать его таким образом:

$o = new StaticSettings;
$o->setKey( "foo", "bar");
print_r( StaticSettings::$arrErr); // Changed private to public to get this to work

Вы можете увидеть, как он работает в этой демонстрации.

Ответ 2

Ваш код не определяет $arrErr как статическую переменную-член. Вы должны объявить его как

<?php
class StaticSettings{
    public static $arrErr = array();

    function setkey($key,$value){
        self::arrErr[$key] = $value;
    }
}
?>