Die beiden Funktionen „initialize()“ und „construct()“ in ThinkPHP können beide als Konstruktoren verstanden werden. Ersteres gilt nur für das TP-Framework, und letzteres ist der PHP-Konstruktor.
Bei der Suche im Internet sind die beiden identisch. In ThinkPHP ist es falsch zu sagen, dass tp kein Konstrukt verwendet, sondern ein eigenes ThinkPHP Version des Initialisierungskonstruktors?
Verwandte Lernempfehlungen: thinkphp
Probieren Sie es selbst aus und Sie werden den Unterschied zwischen den beiden erkennen.
a.php class a{ function __construct(){ echo 'a'; } }
b.php (Hinweis: Der Konstruktor hier ruft nicht parent::__construct(); auf)
include 'a.php'; class b extends a{ function __construct(){ echo 'b'; } } $test=new b();
Laufende Ergebnisse:
b
Es ist ersichtlich, dass Klasse b zwar die Klasse erbt a, Die Ausgabeergebnisse beweisen, dass das Programm nur den Konstruktor der Klasse b ausgeführt hat, aber nicht automatisch den Konstruktor der übergeordneten Klasse ausgeführt hat.
Wenn der Konstruktor von b.php mit parent::__construct()
hinzugefügt wird, sieht es anders aus.
include 'a.php'; class b extends a{ function __construct(){ parent::__construct(); echo 'b'; } } $test=new b();
Dann ist das Ausgabeergebnis:
ab
Zu diesem Zeitpunkt wird der Konstruktor der übergeordneten Klasse ausgeführt.
Werfen wir noch einmal einen Blick auf die Funktion initialize() von thinkphp.
BaseAction.class.php class BaseAction extends Action{ public function _initialize(){ echo 'baseAction'; } IndexAction.class.php class IndexAction extends BaseAction{ public function (){ echo 'indexAction'; }
Führen Sie die Indexmethode unter Index aus. Das Ausgabeergebnis lautet:
baseActionindexAcition
Es ist ersichtlich, dass die _initialize
-Methode der Unterklasse automatisch die _initialize-Methode der übergeordneten Klasse aufruft. Was das Konstruktorkonstrukt von PHP betrifft: Wenn Sie eine Methode der übergeordneten Klasse aufrufen möchten, müssen Sie diese explizit im Konstruktor der Unterklasse aufrufen. parent::__construct();
Dies ist der Unterschied zwischen Initialisierung und Konstrukt in ThinkPHP.
Verwandte Empfehlungen: Programmiervideokurse
Das obige ist der detaillierte Inhalt vonVerstehen Sie den Unterschied zwischen Initialisieren und Konstruieren in ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!