ホームページ  >  記事  >  バックエンド開発  >  PHP のコンストラクターで無関係なクラスのコンストラクターを呼び出す特別な意味は何ですか?

PHP のコンストラクターで無関係なクラスのコンストラクターを呼び出す特別な意味は何ですか?

黄舟
黄舟オリジナル
2017-07-02 09:56:451037ブラウズ

Yii2 の起動プロセスを観察しているのですが、アプリケーション constructor の親クラスは次のように書かれています。最後の文 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;
    }
でどのように処理されるかです。 $config には通常、コンポーネントの設定が含まれているため、setComponents 関数が実際に呼び出されます。 This 関数は Application の親クラスによって定義されているのに、なぜ $this インスタンスが Application 関数を呼び出すことができるのでしょうか? $this は明らかに Component のインスタンスなので、

アプリケーションが

Object クラス の構築メソッドを継承するのはどこなのか、よく理解できていません。 Application の関数を呼び出す

突然思い出したのですが、 Application

extends Module extends ServiceLocator extends Component extends Object なので、Application のコンストラクターの Component::construct は基本的に多層継承で親クラスのコンストラクターを呼び出しているので、 Object の $this は最終的に Application インスタンスを指すことを理解してください。 りー

以上がPHP のコンストラクターで無関係なクラスのコンストラクターを呼び出す特別な意味は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。