Heim  >  Artikel  >  PHP-Framework  >  Analysieren Sie die Verwendung von __initialize() und dem Klassenkonstruktor __construct() in ThinkPHP

Analysieren Sie die Verwendung von __initialize() und dem Klassenkonstruktor __construct() in ThinkPHP

coldplay.xixi
coldplay.xixinach vorne
2020-08-12 17:11:562410Durchsuche

Analysieren Sie die Verwendung von __initialize() und dem Klassenkonstruktor __construct() in ThinkPHP

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:

thinkphp


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.

3. Wenn sowohl die Unterklasse als auch die übergeordnete Klasse

Funktionen haben und Sie beim Initialisieren der Unterklasse gleichzeitig __constrcut () aufrufen möchten, können Sie es in der Unterklasse verwenden __initialize().__construct()

Wenn Wir schreiben zwei A-Klassen wie folgt:

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.

Das Erscheinen von

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:

Programmiervideokurs

Das 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen