Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert das automatische Laden verwandter Funktionen

PHP implementiert das automatische Laden verwandter Funktionen

小云云
小云云Original
2018-03-17 09:52:581547Durchsuche

Wenn beim Ausführen von PHP festgestellt wird, dass eine Klasse verwendet werden muss (sofern es sich um einen mit dieser Klasse verbundenen Vorgang handelt), verfügt das aktuelle Skript zu diesem Zeitpunkt nicht über den Definitionscode dieser Klasse! Dann ruft PHP zu diesem Zeitpunkt automatisch eine Funktion namens __autoload() auf! Und beim Aufruf wird der Funktion ein Parameter übergeben, der der Klassenname der aktuell benötigten Klasse ist.

#自动加载 函数function __aotuload($class_name){
    if(!file_exists("./".$class_name.".class.php")){
        include "./".$class_name.".class.php";
    }else{
        die("系统错误,没有找到相关的类!");
    }
}

Andere Autoloading-Funktionen registrieren

Im Allgemeinen ist die Autoloading-Funktion des Systems __autoload(), aber wenn das Projekt erweitert wird, können mehrere Autoloader angezeigt werden. Funktion, beispielsweise wenn eine automatische Ladefunktion vorhanden ist in der geladenen Datei erscheint, entsteht das Problem doppelter Funktionsnamen!

Wir verwenden überhaupt nicht die __autoload-Funktion, sondern registrieren die eigene Autoloading-Funktion des Benutzers, um die obige Situation zu vermeiden!

#注册其他的自动加载函数 解决自动加载函数重名问题function f1($class_name){
    if(!file_exists("./".$class_name.".class.php")){
        include "./".$class_name.".class.php";
    }else{
        die("系统错误,没有找到相关的类!");
    }
}
spl_autoload_register('f1');

Sie müssen folgende Punkte beachten:

1. Die Anmeldung muss erfolgen, bevor ein bestimmter Kurs erforderlich ist!

2. Sie können mehrere automatische Ladefunktionen registrieren. Bevor die erforderliche Klassendatei erfolgreich geladen wird, wird sie in der Reihenfolge der Registrierung ausgeführt, bis sie gefunden wird.

3. Sobald andere Autoload-Funktionen registriert sind, wird die Standardfunktion __autoload des Systems ungültig!

Wenn Sie die __autoload-Funktion weiterhin verwenden möchten, müssen Sie sie wie andere normale Funktionen erneut registrieren!

Automatische Lademethode registrieren

Im objektorientierten Programmierstil kapseln wir normalerweise benutzerdefinierte automatische Ladefunktionen in einer Klasse!

Registrierung statischer Methoden

Die Syntaxform lautet:

spl_autoload_register(array('class name', 'method name'));

In Darüber hinaus gibt es auch eine relativ einfache Form der Registrierung statischer Methoden:

spl_autoload_register('class name::method name');

Registrierung nicht statischer Methoden

Zu diesem Zeitpunkt registrieren. Die Schritte lauten wie folgt:

1, Instanziieren Sie zuerst ein Objekt

2 und registrieren Sie es dann mit spl_autoload_register(). Zu diesem Zeitpunkt ist die Parameterform des Die Funktion lautet wie folgt:

spl_autoload_register( array(object variable, 'method name'));

#注册自动加载方法class Common {
    public static function autoload($class_name){
        if(!file_exists("./".$class_name.".class.php")){
            include "./".$class_name.".class.php";
        }else{
            die("系统错误,没有找到相关的类!");
        }
    }
}
//spl_autoload_register("Common::autoload");
spl_autoload_register(array("Common","autoload"));

Verwandte Empfehlungen:

Implementierungscode von PHP Einfaches Routing und automatische Klassenladefunktion

Detaillierte Erklärung des automatischen Ladens von PHP-Dateien

Ausführliche Zusammenfassung des automatischen Ladens von PHP

Das obige ist der detaillierte Inhalt vonPHP implementiert das automatische Laden verwandter Funktionen. 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