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

黄舟
Libérer: 2023-03-12 10:24:01
original
1028 Les gens l'ont consulté

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);
    }
Copier après la connexion

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;
    }
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!