簡體   English   中英

為什么我不能在這個特性中使用我的實例?

[英]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屬性。 我認為解決問題的最簡單方法是為該屬性提供一個 null 默認值。

private ?array $currentConfig = null;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM