为什么我不能在此特征中使用我的实例?
Why can't I use my instance in this trait?
我有这个代码
trait GetCurrentConfigTrait
{
private static ?object $instance;
private ?array $currentConfig;
final public static function getCurrentConfig($name)
{
$class = __CLASS__;
self::$instance = self::$instance ?? new $class();
var_dump(self::$instance);
if(is_array(self::$instance->currentConfig)){ # <<< This line throws the error.
return self::$instance->currentConfig;
}
else{
//Load config
return self::$instance->currentConfig;
}
}
}
但是我收到错误 $currentConfig must not be accessed before initialization
。 var dump 向我展示了这个:
object(My\Class)#1 (0) { ["currentConfig":"My\Class":private]=> uninitialized(?array) }
为什么我不能在这里使用我的实例?
问题不在于使用实例,而在于调用静态方法时未设置 $currentConfig
属性。我认为解决该问题的最简单方法是给 属性 一个空默认值。
private ?array $currentConfig = null;
我有这个代码
trait GetCurrentConfigTrait
{
private static ?object $instance;
private ?array $currentConfig;
final public static function getCurrentConfig($name)
{
$class = __CLASS__;
self::$instance = self::$instance ?? new $class();
var_dump(self::$instance);
if(is_array(self::$instance->currentConfig)){ # <<< This line throws the error.
return self::$instance->currentConfig;
}
else{
//Load config
return self::$instance->currentConfig;
}
}
}
但是我收到错误 $currentConfig must not be accessed before initialization
。 var dump 向我展示了这个:
object(My\Class)#1 (0) { ["currentConfig":"My\Class":private]=> uninitialized(?array) }
为什么我不能在这里使用我的实例?
问题不在于使用实例,而在于调用静态方法时未设置 $currentConfig
属性。我认为解决该问题的最简单方法是给 属性 一个空默认值。
private ?array $currentConfig = null;