Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung von Anwendungsbeispielen des automatischen Lademechanismus Autoload von PHP

Ausführliche Erläuterung von Anwendungsbeispielen des automatischen Lademechanismus Autoload von PHP

伊谢尔伦
伊谢尔伦Original
2017-07-01 09:33:351404Durchsuche

Seit PHP5 wurde die Autoload-Interceptor-Methode eingeführt, die automatisch Referenzen in Klassendateien einschließen kann. Siehe die spezifische Verwendung unten.

Wenn Sie während des PHP-Entwicklungsprozesses eine Klasse von außen einführen möchten, verwenden Sie normalerweise die Methoden include und require, um die Datei einzuschließen, die diese definiert Dies kann jedoch zu einer großen Anzahl von Include- oder Require-Methodenaufrufen im neuen Skript führen, die auf die Datei verweisen. Wenn sie versehentlich weggelassen werden, treten Fehler auf, die die Wartung des Codes erschweren.

Seit PHP5 wurde die Autoload-Interceptor-Methode eingeführt, die automatisch Verweise auf Klassendateien einschließen kann:

function autoload($className) { 
include_once $className . '.class.php'; 
} 
$user = new User();

Wenn die PHP-Engine versucht, eine zu instanziieren unbekannt Beim Betrieb einer Klasse wird die Methode autoload() aufgerufen, die PHP die letzte Chance gibt, die erforderliche Klasse zu laden, bevor ein Fehler auftritt. Wenn der obige Code ausgeführt wird, führt die PHP-Engine daher tatsächlich automatisch die Autoload-Methode für uns aus und schließt die Datei User.class.php ein.

In der Autoload-Funktion ausgelöste Ausnahmen können vom Catch-Anweisungsblock nicht abgefangen werden und führen zu einem schwerwiegenden Fehler.

Wenn Sie den interaktiven CLI-Modus von PHP verwenden, wird der automatische Lademechanismus nicht ausgeführt.

Wenn Sie beispielsweise Benennungsregeln im PEAR-Stil verwenden möchten, müssen Sie die Datei User/Register.php einführen. Sie können sie auch wie folgt implementieren:

//加载我 
function autoload($className) { 
$file = str_replace('_', DIRECTORY_SEPARATOR, $className); 
include_once $file . 'php'; 
} 
$userRegister = new User_Register();

Obwohl dies Die Methode ist praktisch und funktioniert in großen Mengen nicht. Wenn mehrere Klassenbibliotheken in eine Anwendung eingeführt werden, können aufgrund der Autoload-Mechanismen verschiedener Klassenbibliotheken einige unerklärliche Probleme auftreten. Nach der Einführung der SPL-Standardbibliothek in PHP5 haben wir eine neue Lösung, die Funktion spl_autoload_register().

Die Funktion dieser Funktion besteht darin, die Funktion im Autoload-Funktionsstapel von SPL zu registrieren und die Systemstandardfunktion autoload() zu entfernen. Sobald die Funktion spl_autoload_register() aufgerufen wird und eine undefinierte Klasse aufgerufen wird, ruft das System nacheinander alle bei der Funktion spl_autoload_register() registrierten Funktionen auf, anstatt automatisch die Funktion autoload() aufzurufen. Das folgende Beispiel ruft User/Register.php auf stattdessen. User_Register.class.php:

Code kopieren Der Code lautet wie folgt:

//不加载我 
function autoload($className) { 
include_once $className . '.class.php'; 
} 
//加载我 
function autoload($className) { 
$file = str_replace('/', DIRECTORY_SEPARATOR, $className); 
include_once $file . '.php'; 
} 
//开始加载 
spl_autoload_register('autoload'); 
$userRegister = new User_Register();

Bei Verwendung von spl_autoload_register() können wir auch berücksichtigen Verwenden einer Für eine sicherere Initialisierungsaufrufmethode lautet die Referenz wie folgt:

Der Code lautet wie folgt:

//系统默认autoload函数 
function autoload($className) { 
include_once $className . '.class.php'; 
} 
//可供SPL加载的autoload函数 
function autoload($className) { 
$file = str_replace('_', DIRECTORY_SEPARATOR, $className); 
include_once $file . '.php'; 
} 
//不小心加载错了函数名,同时又把默认autoload机制给取消了……囧 
spl_autoload_register('_autoload', false); 
//容错机制 
if(false === spl_autoload_functions()) { 
if(function_exists('autoload')) { 
spl_autoload_register('autoload', false); 
} 
}

In einer Unix/Linux-Umgebung, wenn Sie mehrere haben Kleinere Klassen sind einfach zu verwalten. Wenn sie alle in eine PHP-Datei geschrieben sind, können sie durch Erstellen von Softlinks mit dem Befehl ln -s schnell in mehrere Kopien mit unterschiedlichen Klassennamen verteilt und dann über Autoload geladen werden Mechanismus.

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Anwendungsbeispielen des automatischen Lademechanismus Autoload von 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