Heim > Artikel > Backend-Entwicklung > Detaillierte Einführung in den Unterschied zwischen den Konstruktoren _construct() und _initialize() von Klassen in ThinkPHP
In diesem Artikel wird hauptsächlich der Unterschied zwischen den Konstruktoren _construct() und _initialize() in ThinkPHP vorgestellt. Die Einführung im Artikel ist meiner Meinung nach sehr detailliert. Freunde, die es brauchen. Werfen wir unten einen gemeinsamen Blick darauf.
Vorwort
Ich glaube, dass PHPer, die mit THINKPHP vertraut sind, grundsätzlich mit dieser Methode vertraut sindWir verwenden diese Methode selten. _initialize()
Sofern Sie kein Plug-In selbst schreiben, wird es selten verwendet. _construct()
in PHP integrierte _construct()
Konstruktionsmethode . Mein erster Eindruck war, dass sie mir beim Erlernen von Java oft unbekannt war , ich habe es schon lange nicht mehr benutzt. Normalerweise schreibe ich die wichtigsten Wissenspunkte
Fügen Sie zuerst den Code ein (meine Umgebung ist wamp, ich verwende das TP-Framework):
FatherAction.class erstellt
<?php class FatherAction extends Action{ public function construct(){ echo 'father'; } } ?>
SonAction.class.php-Datei erstellt
<?php class SonAction extends FatherAction{ public function construct(){ echo 'son'; } function index(){ } } ?>Führen Sie
in der Unterklasse SonAction aus, um die Ausgabe anzuzeigen. Das Ergebnis: index()
son
Wenn die Unterklasse geändert wird in:
<?php class SonAction extends FatherAction{ public function construct(){ parent::construct(); echo 'son'; } function index(){ } } ?>
Das laufende Ergebnis ist;
fatherson
Die obigen Ergebnisse können geschlossen werden:
Der Konstruktor der übergeordneten Klasse wird nicht automatisch aufgerufen, wenn Sie den Konstruktor der Unterklasse ausführen Rufen Sie es auf und fügen Sie dannparent::construct()
ändern, werden wir feststellen, dass das Ergebnis mit dem vorherigen übereinstimmt THINKPHP_initialize()
Methode, Sie müssen auch diesen Satz verwenden: _initialize()
parent::_initialize()
, der mit PHP geliefert wird, derselbe ist wie die construct()
-Methode von THINKPHP? _initialize()
Fügen Sie zunächst zwei Codeteile ein:
<?php class FatherAction extends Action{ public function construct(){ echo 'father'; } } ?>
<?php class SonAction extends FatherAction{ public function _initialize(){ echo 'son'; } function index(){ } } ?>Beim Ausführen der Indexmethode der Unterklasse SonAction wird festgestellt, dass das Ausgabeergebnis wie folgt lautet: VaterDas heißt, die Unterklasse ruft den Konstruktor der übergeordneten Klasse auf, ruft jedoch nicht die
-Methode der Unterklasse auf _initialize()
Fügen Sie zwei Codeteile ein:
<?php class FatherAction extends Action{ public function construct(){ if(method_exists($this,"hello")){ $this->hello(); } echo 'father'; } } ?>
<?php class SonAction extends FatherAction{ public function _initialize(){ echo 'son'; } function index(){ } function hello(){ echo 'hello'; } } ?>Führen Sie die Indexmethode der Unterklasse SonAction aus und stellen Sie fest, dass das Eingabeergebnis hellofater ist
Daraus können wir die Schlussfolgerung ziehen:
Wenn die übergeordnete Klasse von THINKPHP einen Konstruktor hat, die Unterklasse jedoch nicht, führt THINKPHP den der Unterklasse nicht aus muss aufgerufen werden. Der Konstruktor muss _initialize()
-----------------
parent::construct()
Wenn eine Unterklasse von THINKPHP sowohl ein _initialize()
-Konstruktor und Die
-Konstruktor der Unterklasse aus (ich habe dies persönlich getestet, der obige Code jedoch nicht). construct
_initialize()
construct
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Unterschied zwischen den Konstruktoren _construct() und _initialize() von Klassen in ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!