Heim  >  Artikel  >  Backend-Entwicklung  >  Nutzungsanalyse von initialize() und Konstruktor-construct() in ThinkPHP

Nutzungsanalyse von initialize() und Konstruktor-construct() in ThinkPHP

不言
不言Original
2018-06-07 16:18:122908Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung von _initialize() und dem Klassenkonstruktor _construct() in ThinkPHP vorgestellt. Er analysiert die Methode zum Erstellen von Unterklassen während der Initialisierung von Klassen in ThinkPHP. Es handelt sich um ein objektorientiertes Programm, das ThinkPHP verwendet . Freunde, die es brauchen, können sich auf die wichtigeren Konzepte im Design beziehen

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 beiläufig verwendet werden, da Ihre Modulklasse die übergeordnete Klasse erbt und die übergeordnete Klasse nicht definiert ist; Funktionen in der PHP-Klasse, der Konstruktor der PHP-Klasse ist nur __construct().

2. Initialisierung der Klasse: Wenn die Unterklasse einen eigenen Konstruktor (__construct()) hat, ruft sie ihren eigenen zur Initialisierung auf Wenn nicht, rufen Sie den Konstruktor der übergeordneten Klasse auf, um eine eigene Initialisierung durchzuführen.

3. Wenn sowohl die Unterklasse als auch die übergeordnete Klasse über __construct()-Funktionen verfügen und Sie beim Initialisieren der Unterklasse gleichzeitig __constrcut() der übergeordneten Klasse aufrufen möchten, können Sie parent in der Unterklasse verwenden: :__construct().

Wenn wir zwei Klassen schreiben, wie folgt:

class Action{  
    public function __construct()  
    {  
        echo 'hello Action';  
    }  
}  
class IndexAction extends Action{  
    public function __construct()  
    {  
        echo 'hello IndexAction';  
    }  
}  
$test = new IndexAction;  
//output --- hello IndexAction

Offensichtlich ruft die Unterklasse IndexAction bei der Initialisierung ihren eigenen Konstruktor auf, sodass die Ausgabe „Hallo IndexAction“ lautet. aber ändern Sie die Unterklasse in:

class IndexAction extends Action{  
    public function __initialize()  
    {  
        echo 'hello IndexAction';  
    }  
}

Dann ist die Ausgabe „Hallo Aktion“, da die Unterklasse IndexAction keinen eigenen Konstruktor hat, wenn ich bei der Initialisierung gleichzeitig die übergeordnete Klasse aufrufen möchte Unterklasse Was ist mit dem Konstruktor der Klasse?

class IndexAction extends Action{  
    public function __construct()  
    {  
        parent::__construct();  
        echo 'hello IndexAction';  
    }  
}

Auf diese Weise können natürlich zwei Sätze gleichzeitig aufgerufen werden >

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 Sie auch Die beiden Sätze werden gleichzeitig ausgegeben, und die Methode hello() in der Unterklasse hier ähnelt __initialize() in ThinkPHP.

Daher dient das Erscheinen von __initialize() in ThinkPHP nur dazu, Programmierern zu helfen, die häufige Verwendung von parent::__construct() beim Schreiben von Unterklassen zu vermeiden und gleichzeitig den Konstruktor der übergeordneten Klasse korrekt aufzurufen Wenn wir eine Unterklasse in ThnikPHP initialisieren, müssen wir daher __initialize() anstelle von __construct() verwenden. Natürlich können Sie die Funktion __initialize() auch in Ihren bevorzugten Funktionsnamen ändern.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Funktion move_uploaded_file() in PHP


Konstruktorfunktion _construct() der Klasse in ThinkPHP Differences von _initialize()


Das obige ist der detaillierte Inhalt vonNutzungsanalyse von initialize() und Konstruktor-construct() in ThinkPHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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