Heim > Artikel > Backend-Entwicklung > Was ist die besondere Bedeutung des Aufrufs des Konstruktors einer nicht verwandten Klasse im Konstruktor von PHP?
Ich beobachte den Startvorgang von Yii2 und die übergeordnete Klasse des Application -Konstruktors ist so geschrieben. Ich möchte fragen, was das Besondere am letzten Satz Component::construct($config) ist. hier angerufen?
public function construct($config = []) { Yii::$app = $this; $this->setInstance($this); $this->state = self::STATE_BEGIN; $this->preInit($config); $this->registerErrorHandler($config); Component::construct($config); }
Hauptsächlich, weil es ein Problem gibt, das ich beim Verfolgen des Codes nicht verstehen kann,
Component::construct($config)---->Object::construct($ config)-- ->Yii::configure($this,$config)
So wird es in Yii::configure gehandhabt:
public static function configure($object, $properties) { foreach ($properties as $name => $value) { $object->$name = $value; } return $object; }
Die entsprechende Setter-Funktion wird hier tatsächlich aufgerufen , wobei $config im Allgemeinen die Einstellungen von Komponenten enthält, sodass die Funktion setComponents aufgerufen wird. Diese Funktion wird von der übergeordneten Klasse Application definiert. Warum kann die Instanz $this also die Funktion Application aufrufen? $Dies ist offensichtlich eine Instanz von Component, daher kann ich die Grundlagen von PHP nicht gut verstehen.
Anwendung ruft die Konstruktionsmethode von Component auf und erbt die Konstruktionsmethode von Component 🎜>Objektklasse, wo ruft sie die Funktion der Anwendung auf? Der Konstruktor der Anwendung ruft im Grunde den Konstruktor der übergeordneten Klasse mit mehrschichtiger Vererbung auf. Es ist also verständlich, dass $this in Object letztendlich auf die Anwendungsinstanz verweist.
Das obige ist der detaillierte Inhalt vonWas ist die besondere Bedeutung des Aufrufs des Konstruktors einer nicht verwandten Klasse im Konstruktor von PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!