Heim  >  Artikel  >  Backend-Entwicklung  >  Erklärung des Unterschieds zwischen der Funktion _initialize() und der Funktion __construct() in PHP

Erklärung des Unterschieds zwischen der Funktion _initialize() und der Funktion __construct() in PHP

不言
不言Original
2018-08-18 11:35:1815724Durchsuche

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(&#39;username&#39;)){
            $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!

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

In Verbindung stehende Artikel

Mehr sehen