Verstehen Sie den Unterschied zwischen Initialisieren und Konstruieren in ThinkPHP

coldplay.xixi
Freigeben: 2020-08-12 17:15:37
nach vorne
1987 Leute haben es durchsucht

Verstehen Sie den Unterschied zwischen Initialisieren und Konstruieren in ThinkPHP

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';

  }

}
Nach dem Login kopieren

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();
Nach dem Login kopieren

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();
Nach dem Login kopieren

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';

    }
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage