Automatisches Laden von PHP-Klassen

不言
Freigeben: 2023-03-24 20:40:01
Original
1618 Leute haben es durchsucht

Dieser Artikel stellt das automatische Laden von PHP-Klassen vor, das einen gewissen Referenzwert hat. Jetzt kann ich es mit allen teilen, die es brauchen.

Schreiben Sie zuerst eine HumanModel.php

class HumanModel {
    public function t() {
        echo &#39;人类<br >&#39;;
    }
}
Nach dem Login kopieren
Nach dem Login kopieren


// =Beispiel= //

require(&#39;./HumanModel.php&#39;);$lisi = new HumanModel();$lisi->t(); // 人类
Nach dem Login kopieren
Nach dem Login kopieren


// =Automatisches Laden von Klassen= //

function __autoload($c) {
    echo &#39;~~~~~~~~~&#39;,$c,&#39;~~~~~~~~&#39;;
}$ming = new Dog();
Nach dem Login kopieren
Nach dem Login kopieren


// === Notizen Teil 1 ===

/*
Automatisches Laden von Klassen

Wenn eine nicht vorhandene Klasse aufgerufen wird,
Bevor wir einen Fehler melden, können wir auch die __autoload-Funktion <🎜 verwenden >Eine Interventionsmöglichkeit erhalten

Das System ruft die Funktion __autoload() auf

und übergibt automatisch den „Klassennamen“ an die Funktion __autoload

Wir können ihn in __autoload Erforderliche Klassen < laden 🎜>*/

function __autoload($c) {
    echo &#39;我先自动加载&#39;;    echo &#39;./&#39; . $c . &#39;.php&#39;;    echo &#39;<br >&#39;;    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$lisi = new HumanModel();$lisi->t();// 我先自动加载./HumanModel.php// 人类function test() {
    // 函数内可以写任何合法的PHP代码,包含再声明一个函数/类
    class Bird {
        public static function sing() {
            echo &#39;百灵鸟放声歌唱!<br >&#39;;
        }
    }
}// 必须要调用函数然后才能执行内部test();
Bird::sing(); 


/*
Bird::sing(); 

未定义类
转到上面类的自动加载函数中,于是报错如下:
Warning: require(./Bird.php): failed to open stream: No such file or directory
找不到Bird这个php
*/
Nach dem Login kopieren
Nach dem Login kopieren

// ===Notizen Teil 2===


/*

Kann das automatische Laden nur die __autoload-Funktion verwenden?

Antwort: Nein, Sie können tatsächlich eine Funktion angeben.

Verwenden Sie beispielsweise die Funktion zidongjiazai()

Hinweis: Wir müssen das System darüber informieren, dass wir ein automatisches Laden geschrieben haben method

Verwenden Sie die Systemfunktion spl_autoload_register, um

*/

spl_autoload_register(&#39;zidongjiazai&#39;);function zidongjiazai($c) {
    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$HumanModel = new HumanModel();$HumanModel->t();
Nach dem Login kopieren
Nach dem Login kopieren

// zu benachrichtigen. Tipps: Wir können auch eine statische Methode der Klasse registrieren, die als Autoloading-Funktion dient

Zuerst schreibe ein HumanModel.php

class HumanModel {
    public function t() {
        echo &#39;人类<br >&#39;;
    }
}
Nach dem Login kopieren
Nach dem Login kopieren

// =Zitat= //

require(&#39;./HumanModel.php&#39;);$lisi = new HumanModel();$lisi->t(); // 人类
Nach dem Login kopieren
Nach dem Login kopieren

// =Automatisches Laden von Klassen= //

function __autoload($c) {
    echo &#39;~~~~~~~~~&#39;,$c,&#39;~~~~~~~~&#39;;
}$ming = new Dog();
Nach dem Login kopieren
Nach dem Login kopieren

// ===Notizen Teil 1===


/*

Automatisches Laden von Klassen


Wenn eine nicht vorhandene Klasse aufgerufen wird,

Bevor ein Fehler gemeldet wird , wir können auch die __autoload-Funktion verwenden

Eine Interventionsmöglichkeit erhalten

Das System ruft die __autoload()-Funktion auf

und übergibt automatisch den „Klassennamen“ an die __autoload-Funktion


Wir können die Anforderungen in der __autoload-Klasse laden

*/

function __autoload($c) {
    echo &#39;我先自动加载&#39;;    echo &#39;./&#39; . $c . &#39;.php&#39;;    echo &#39;<br >&#39;;    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$lisi = new HumanModel();$lisi->t();// 我先自动加载./HumanModel.php// 人类function test() {
    // 函数内可以写任何合法的PHP代码,包含再声明一个函数/类
    class Bird {
        public static function sing() {
            echo &#39;百灵鸟放声歌唱!<br >&#39;;
        }
    }
}// 必须要调用函数然后才能执行内部test();
Bird::sing(); 


/*
Bird::sing(); 

未定义类
转到上面类的自动加载函数中,于是报错如下:
Warning: require(./Bird.php): failed to open stream: No such file or directory
找不到Bird这个php
*/
Nach dem Login kopieren
Nach dem Login kopieren

// ===Notizen Teil 2===


/*

Kann nur automatisch geladen werden die __autoload-Funktion verwenden?

Antwort: Nein, Sie können tatsächlich eine Funktion angeben.

Verwenden Sie beispielsweise die Funktion zidongjiazai()

Hinweis: Wir müssen das System darüber informieren, dass wir ein automatisches Laden geschrieben haben Methode

Verwenden Sie die Systemfunktion spl_autoload_register, um

*/

spl_autoload_register(&#39;zidongjiazai&#39;);function zidongjiazai($c) {
    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$HumanModel = new HumanModel();$HumanModel->t();
Nach dem Login kopieren
Nach dem Login kopieren

// zu benachrichtigen. Tipps: Wir können auch eine statische Methode der Klasse als Autoloading-Funktion registrieren

Verwandte Empfehlungen:

PHPs abstrakte Klasse

Das obige ist der detaillierte Inhalt vonAutomatisches Laden von PHP-Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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