Доступ к приватному статическому члену

Не уверен, что это перестало работать из-за недавнего обновления до PHP5.6 или чего-то еще.

namespace Data;

class AWS{
private static $config;

public static function setup($config){
if(isset(self::$config)){
throw new Exception("AWS has already been setup.");
}
self::$config = $config;
}

...
}

Тогда из другого файла:

use \Data\AWS;
AWS::setup($array_of_configs);

Настройка вызова дает:

Неустранимая ошибка: доступ к необъявленному статическому свойству:
CoPatient \ Data \ AWS :: $ config в /var/www/html/src/data/AWS.php на линии
24

Используя xdebug, я могу подтвердить, что $config содержит 1-й ассоциативный массив.

Редактировать: Кажется, что это происходит, только если у меня запущен прослушиватель xdebug.

0

Решение

Я полагаю, что вы просто неправильно обращаетесь к нему при вызове метода. Вероятно, с помощью селектора экземпляра, как: $a = new AWS(); $a->setup();

class AWS {
private static $config;

public static function setup($config){
if(isset(self::$config)){
throw new Exception("AWS has already been setup.");
}
var_dump(self::$config);
self::$config = $config;
var_dump(self::$config);
}

public static function getConfig() {
return self::$config;
}
}

AWS::setup(array('test'));
var_dump(AWS::getConfig());

Должен дать вывод:

NULL
array(1) {
[0]=>
string(4) "test"}
array(1) {
[0]=>
string(4) "test"}

Скрипки: http://www.tehplayground.com/#idd0F1WGk

2

Другие решения

Я думаю, что вы просто не делаете $ aws = new AWS () перед установкой вызова. Вот так ?

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector