簡體   English   中英

從子類更改父變量

[英]Change parent variable from child class

我正在嘗試在php中構建簡單的配置系統,您可以在其中擴展基礎並將數據放在子類中,而父類則為您處理所有事情。 我會讓代碼說明一切。 但是,當我嘗試執行此操作時,子類將不會更改父變量。

家長班

class ConfigBase {
    protected static $data = [];

    public static function Get($name)
    {
        if(!isset(self::$data[$name]))
        {
            return null;
        }

        return self::$data[$name];
    }

    public static function Set($name, $value)
    {
        self::$data[$name] = $value;
    }
}

兒童班

class Database extends ConfigBase {
    protected static $data = [
        'host'      => 'localhost',
        'username'  => 'root',
        'password'  => '',
        'database'  => '',
        'port'      => 3306
    ];
}

輸出:

// NULL
echo Database::Get('host');

有沒有一種方法/解決方法/ hack來完成此任務?

self更改為static

當您使用self ,它將始終評估為您定義分配的類。 有關詳細信息,請參見http://php.net/manual/en/language.oop5.late-static-bindings.php

或擺脫靜態屬性,並使用實例變量和方法。 這樣,您就不僅限於特定類型的一種配置。

暫無
暫無

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

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