Maison  >  Article  >  développement back-end  >  Quelle est la signification particulière d'appeler le constructeur d'une classe non liée dans le constructeur en PHP ?

Quelle est la signification particulière d'appeler le constructeur d'une classe non liée dans le constructeur en PHP ?

黄舟
黄舟original
2017-07-02 09:56:451029parcourir

Je regarde le processus de démarrage de Yii2, et la classe parent du constructeur Application est écrite comme ceci ; je voudrais demander quelle est la particularité de la dernière phrase de Component::construct($config) ) être appelé ici ?

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

        $this->state = self::STATE_BEGIN;

        $this->preInit($config);

        $this->registerErrorHandler($config);

        Component::construct($config);
    }

Principalement parce qu'il y a un problème que je n'arrive pas à comprendre dans le processus de suivi du code,
Component::construct($config)---->Object::construct($ config)-- ->Yii::configure($this,$config)
Voici comment cela est géré dans Yii::configure:

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

        return $object;
    }

La fonction setter correspondante est en fait appelée ici , où $config contient généralement les paramètres des composants, donc la fonction setComponents sera appelée. Cette fonction est définie par la classe parent Application, alors pourquoi l'instance $this peut-elle appeler la fonction Application ? $c'est évidemment une instance de Component, donc je ne peux pas le comprendre. Je n'ai pas bien appris les bases de PHP

l'application appelle la méthode de construction de Component, et la méthode de construction de Component hérite <.>Classe d'objet, où appelle-t-il la fonction d'Application

Je me suis soudainement souvenu que Application

étend Le module étend ServiceLocator étend le composant étend l'objet, donc le Component::construct dans le Le constructeur d'Application appelle essentiellement le constructeur de la classe parent avec un héritage multicouche. On peut donc comprendre que $this dans Object pointe finalement vers l'instance d'Application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn