访问私有静态成员
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"
}
我认为您只是在调用设置之前不执行 $aws = new AWS() 。是吗?
不确定这是否由于最近升级到 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"
}
我认为您只是在调用设置之前不执行 $aws = new AWS() 。是吗?