Dieser Artikel analysiert __initialize() und den Klassenkonstruktor __construct() in ThinkPHP anhand von Beispielen. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:
__construct in thinkphp kann nicht zufällig verwendet werden, da Ihre Modulklasse die übergeordnete Klasse erbt und die übergeordnete Klasse definiert ist:
thinkphp3. Wenn sowohl die Unterklasse als auch die übergeordnete Klasse
1 ist keine Funktion in der PHP-Klasse. 2. Klasseninitialisierung: Wenn die Unterklasse einen eigenen Konstruktor (__construct()) hat, rufen Sie ihren eigenen zur Initialisierung auf Der Konstruktor der übergeordneten Klasse führt seine eigene Initialisierung durch.
Funktionen haben und Sie beim Initialisieren der Unterklasse gleichzeitig __constrcut () aufrufen möchten, können Sie es in der Unterklasse verwenden __initialize()
.__construct()
Der Code lautet wie folgt:__construct()
class Action{ public function __construct() { echo 'hello Action'; } } class IndexAction extends Action{ public function __construct() { echo 'hello IndexAction'; } } $test = new IndexAction; //output --- hello IndexAction
parent::__construct()
Natürlich ruft die Unterklasse IndexAction beim Initialisieren ihren eigenen Konstruktor auf, sodass die Ausgabe „Hallo IndexAction“ lautet, aber ändern Sie die Unterklasse wie folgt:
Der Code lautet wie folgt:
class IndexAction extends Action{ public function __initialize() { echo 'hello IndexAction'; } }
Dann ist die Ausgabe „Hallo Aktion“, da die Unterklasse IndexAction keinen eigenen Konstruktor hat. Was ist, wenn ich beim Initialisieren gleichzeitig den Konstruktor der übergeordneten Klasse aufrufen möchte? Die Unterklasse?
Der Code lautet wie folgt:
class IndexAction extends Action{ public function __construct() { parent::__construct(); echo 'hello IndexAction'; } }
Auf diese Weise können natürlich zwei Sätze gleichzeitig ausgegeben werden. Eine andere Möglichkeit besteht darin, die Methode der Unterklasse aufzurufen Der Code lautet wie folgt:
class Action{ public function __construct() { if(method_exists($this,'hello')) { $this -> hello(); } echo 'hello Action'; } } class IndexAction extends Action{ public function hello() { echo 'hello IndexAction'; } }
Auf diese Weise können auch zwei Sätze gleichzeitig ausgegeben werden, und hier in der Unterklasse Die Methode hello() ähnelt __initialize() in ThinkPHP.
in ThinkPHP dient also nur dazu, Programmierern die häufige Verwendung von
beim Schreiben von Unterklassen zu erleichtern und gleichzeitig den Konstruktor der übergeordneten Klasse im Framework korrekt aufzurufen, also wenn wir die Unterklasse in ThnikPHP initialisieren Verwenden Sie __initialize() anstelle von. Natürlich können Sie die Funktion __initialize() auch in den gewünschten Funktionsnamen ändern.
Verwandte Empfehlungen:
ProgrammiervideokursDas obige ist der detaillierte Inhalt vonAnalysieren Sie die Verwendung von __initialize() und dem Klassenkonstruktor __construct() in ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!