访问私有静态成员

时间:2015-11-16 16:02:26

标签: php static-methods static-members

由于最近升级到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);

致电设置:

  

致命错误:访问未声明的静态属性:   在/var/www/html/src/data/AWS.php上的CoPatient \ Data \ AWS :: $ config在线   24

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

编辑:如果我有一个xdebug监听器正在运行,这似乎只会发生。

2 个答案:

答案 0 :(得分:2)

我相信你在调用方法时只是错误地访问它。可能使用像$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

答案 1 :(得分:0)

我认为你在调用设置之前不要做$ aws = new AWS()。那是对的吗?