Heim > Artikel > Backend-Entwicklung > Erklärung des Unterschieds zwischen der Funktion _initialize() und der Funktion __construct() in PHP
Der Inhalt dieses Artikels befasst sich mit dem Unterschied zwischen der Funktion _initialize() und der Funktion __construct(). Ich hoffe, dass er für Sie hilfreich ist. helfen.
_initialize() Methode muss ausgeführt werden, bevor eine Methode ausgeführt wird, natürlich auch __construct-Konstruktor. Das heißt, wenn es eine _initialize()-Funktion gibt, führt der Aufruf einer beliebigen Methode des Objekts dazu, dass die _initialize()-Funktion automatisch aufgerufen wird und der __construct()-Konstruktor nur einmal aufgerufen wird, wenn das Objekt erstellt wird hat nichts mit anderen Methodenaufrufen zu tun.
__construct ist hier ein doppelter Bindestrich und die Funktion _initialize() ein einzelner Bindestrich
Wenn sowohl die übergeordnete als auch die untergeordnete Klasse über die Funktion _initialize() verfügen, überschreibt die untergeordnete Klasse die der übergeordneten Klasse , wenn die Unterklasse es nicht hat, die Elternklasse aber schon, dann erbt die Unterklasse es von der Elternklasse.
Standardmäßig ruft der Konstruktor der Unterklasse nicht automatisch den Konstruktor der übergeordneten Klasse auf. Wenn Sie _initialize() eines Unterklassenobjekts aufrufen, wird nicht automatisch _initialize() der übergeordneten Klasse aufgerufen
Wenn Sie den Konstruktor der Unterklasse tatsächlich schreiben, müssen Sie im Allgemeinen den Konstruktor der übergeordneten Klasse hinzufügen Aktiv Rufen Sie parent::__construct() auf, andernfalls wird eine Nullzeigerausnahme des Unterklassenobjekts verursacht, z. B. Aufruf einer Mitgliedsfunktion „assign()“ für ein Nichtobjekt.
Daher können in einigen Systemhintergrundverwaltungs- oder Kommentarfunktionen die relevanten Controller auf den Basiscontroller erweitert werden:
Base.php:
<?php namespace app\admin\controller; use think\Controller; class Base extends Controller { public function _initialize(){ if(!session('username')){ $this->error('请先登录系统!','Login/index'); } } }
Article.php
<?php namespace app\Admin\controller; use app\Admin\model\Article as ArticleModel; use app\admin\controller\Base; class Article extends Base { ……… ……… }
Auf diese Weise wird, bevor eine Methode des Artikel-Controllers ausgeführt wird, zuerst die _initialize()-Methode in Base.php ausgeführt, um zu erkennen, ob Sie angemeldet sind, ohne ein Objekt zu erstellen.
Verwandte Empfehlungen:
Der Unterschied zwischen der Funktion explosion() und der Funktion strtok() in PHP
method_exists( in PHP) und is_callable() Funktionsanalyse
Das obige ist der detaillierte Inhalt vonErklärung des Unterschieds zwischen der Funktion _initialize() und der Funktion __construct() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!