Является ли свойство статического массива невозможным в 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;
}
}
?>