访问私有静态成员

Accessing a private static member

不确定这是否由于最近升级到 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);

调用设置给出:

Fatal error: Access to undeclared static property: CoPatient\Data\AWS::$config in /var/www/html/src/data/AWS.php on line 24

使用 xdebug 我可以确认 $config 包含一维关联数组。

编辑: 这似乎只有在我有一个 xdebug 侦听器时才会发生 运行。

我相信你只是在调用该方法时访问错误。可能使用实例选择器,如:$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"
}

Fiddle: http://www.tehplayground.com/#idd0F1WGk

我认为您只是在调用设置之前不执行 $aws = new AWS() 。是吗?