首頁 > 後端開發 > php教程 > 在php中建構函式裡面呼叫無關類別的建構子有什麼特殊意義

在php中建構函式裡面呼叫無關類別的建構子有什麼特殊意義

黄舟
發布: 2023-03-12 10:24:01
原創
1084 人瀏覽過

我在看Yii2的啟動過程,其中Application的父類別建構子是這麼寫的;我想問最後一句Component::construct($config)在這裡呼叫有什麼特殊的含義嗎?

    public function construct($config = [])
    {
        Yii::$app = $this;
        $this->setInstance($this);

        $this->state = self::STATE_BEGIN;

        $this->preInit($config);

        $this->registerErrorHandler($config);

        Component::construct($config);
    }
登入後複製

主要是在追蹤程式碼的過程中有一個問題無法理解,
Component::construct($config)---->Object::construct($config)---> ;Yii::configure($this,$config)
在Yii::configure裡面是這樣處理的:

  public static function configure($object, $properties)
    {
        foreach ($properties as $name => $value) {
            $object->$name = $value;
        }

        return $object;
    }
登入後複製

這裡其實最後要呼叫對應的setter函數,其中$config一般包含components的設置,所以會呼叫到setComponents函數,這個函數時Application父類別定義的,所以這裡$this實例為什麼可以呼叫到Application的函數? $this明明是Component的實例嘛,所以理解不了,PHP基礎沒學好

application 呼叫Component的建構方法,Component繼承Object類別的建構方法哪裡呼叫Application的函數了

突然想起來了,Application extends Module extends ServiceLocator extends Component extends Object所以Application的建構子裡面的Component::construct根本就是在呼叫多層繼承的父類別的建構函數,所以可以理解Object中的$this最終還是指向Application實例。

  public function construct($config = [])
    {
        Yii::$app = $this;
        $this->setInstance($this);

        $this->state = self::STATE_BEGIN;

        $this->preInit($config);

        $this->registerErrorHandler($config);

        Component::construct($config);
    }
登入後複製

以上是在php中建構函式裡面呼叫無關類別的建構子有什麼特殊意義的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板