为什么我不能在此特征中使用我的实例?

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;