Heim > Artikel > Backend-Entwicklung > Einführung in den automatischen Lademechanismus von PHP – Funktion spl_autoload_register(), automatisches Laden von PHP-Klassen
* Die Funktionen von include und require sind die gleichen. Der Unterschied besteht darin, dass include nur eine Warnung generiert, wenn ein Fehler auftritt, während require einen Fehler auslöst und das Skript beendet.
* Der einzige Unterschied zwischen include_once und include besteht darin, dass include_once prüft, ob die Datei eingeführt wurde, und wenn ja, wird sie nicht erneut eingeführt.
Die Funktion spl_autoload_register() ist eine wichtige Methode, um das automatische Laden undefinierter Klassen zu realisieren. Das sogenannte automatische Laden bedeutet, dass wir beim Erstellen einer neuen Klasse zunächst die Klassendatei If einbinden oder anfordern müssen Gibt es weder include noch require , wird ein Fehler gemeldet. Dann müssen wir viele Include- oder Require-Dateien in den Header der Datei schreiben, was sehr mühsam ist.
Um normalerweise eine neue Klasse zu erstellen, wenn es keine Include- oder Require-Klasse gibt, haben wir das Konzept von automatisches Laden, und das heißt, eine neue Klasse kann normalerweise neu sein, ohne die Klassendatei im Voraus einzuschließen, sodass unser Dateiheader nicht viele Include-Dateien (erforderlich) enthalten muss. Tatsächlich handelt es sich hierbei um eine Art Kapselung!
Die oben genannten Funktionen können mit der Funktion spl_autoload_register erreicht werden. Werfen wir einen Blick auf das Implementierungsprinzip.
Die Parameter dieser Funktion lauten wie folgt:
Der erste Parameter: autoload_function
Dies ist ein Funktions-[Methoden]-Name, der ein String oder ein Array sein kann (wird zum Aufrufen von Klassenmethoden verwendet). Die Funktion dieser Funktion (Methode) besteht darin, die Klassendatei einzuschließen (anzufordern), die neu benötigt wird, sodass die Datei bei der Verwendung von neu nicht gefunden wird. Tatsächlich kapselt es die Include- und Require-Funktionen des gesamten Projekts.
Zweiter Parameter: throw
Dieser Parameter legt fest, ob spl_autoload_register() eine Ausnahme auslöst, wenn die autoload_function nicht erfolgreich registriert werden kann.
Der dritte Parameter: prepend
Wenn true, fügt spl_autoload_register() die Funktion dem Kopf der Warteschlange statt dem Ende hinzu.
Wenn wir eine neue Klasse erstellen und die Klassendatei nicht enthalten ist, wird die Methode autoload_function ausgeführt
Schauen wir uns zunächst ein Fehlerbeispiel an: ++++++++++ + ++++++++++
<?php //当我们直接new一个未包含class类文件时候会报错 $objDemo = new AutoloadClass();
Verwenden Sie die Funktion spl_autoload_register() korrekt
Aus dem folgenden Beispiel können wir ersehen, dass wenn neu nicht enthalten ist Klasse, die Funktion mit dem ersten Parameter Funktionsnamen von spl_autoload_register wird ausgeführt. Ein Parameter dieser Funktion ist der Klassenname, der neu ist. Die Funktion dieser Funktion besteht darin, diese Klasse einzuschließen (der Klassenname stimmt mit dem Dateinamen überein). , so dass eine automatische Ladefunktion erreicht wird. Das ist das Prinzip, es ist nicht sehr kompliziert.
<?php // 定义工具类在服务器位置 常量 define('TOOLS_ROOT', __DIR__ . '/'); //文件 autoloadClass.php ,需要new的文件 class AutoloadClass{ public function __construct() { // echo '你已经包含我了'; } } //文件autoloadDemo.php文件 spl_autoload_register('myAutoLoad', true, true); function myAutoLoad($className){ $classFileName = TOOLS_ROOT."{$className}.php"; include $classFileName; }
Darüber hinaus können wir es in eine anonyme Funktion ändern, die implementiert werden soll:
<?php // 定义工具类在服务器位置 常量 define('TOOLS_ROOT', __DIR__ . '/'); //文件 autoloadClass.php ,需要new的文件 class AutoloadClass{ public function __construct() { // echo '你已经包含我了'; } } spl_autoload_register(function ($className) { $classFileName = TOOLS_ROOT."{$className}.php"; include $classFileName; }, true, true); $objDemo = new AutoloadClass();
Weitere PHP-bezogene Kenntnisse finden Sie auf der PHP-Chinese-Website!
Das obige ist der detaillierte Inhalt vonEinführung in den automatischen Lademechanismus von PHP – Funktion spl_autoload_register(), automatisches Laden von PHP-Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!