Heim > Artikel > Backend-Entwicklung > Ausführliche Erklärung zweier automatischer Ladefunktionen von PHP
Bei Verwendung des ThinkPHP-Frameworks ist es nützlich, beim Anzeigen des Quellcodes die beiden Funktionen __autoload und apl_autoload_register anzuzeigen, und diese beiden Funktionen werden zum automatischen Laden verwendet. Seine Hauptfunktion besteht darin, dass, wenn Ihre Quellcodedatei eine Datei verwendet, die nicht geladen wurde, diese beiden Funktionen ausgelöst werden, um die entladene Datei zu laden.
Die __autoload-Funktion von PHP ist eine magische Funktion, bevor diese Funktion erschien Wenn in einer PHP-Datei auf 100 Objekte verwiesen wird, müsste die Datei „include“ oder „require“ verwenden, um 100 Klassendateien einzuführen, was dazu führen würde, dass die PHP-Datei extrem groß wird. Es gibt also diese __autoload-Funktion.
Wenn das neue Schlüsselwort zum Instanziieren eines Objekts in einer PHP-Datei verwendet wird und die Klasse in dieser PHP-Datei nicht definiert ist, wird die Funktion __autoload ausgelöst. Zu diesem Zeitpunkt können Sie die Definition des einführen Klasse PHP-Datei, und dann kann sie erfolgreich instanziiert werden. (Hinweis: Wenn das Objekt, das instanziiert werden muss, die Definition der Klasse in dieser Datei gefunden hat, wird die Funktion __autoload nicht ausgelöst.)
#Animal.php<?php class Animal{}?>
#main.php<?php function __autoload($classname){ $classpath = "{$classname}.php"; if(file_exists($classpath)){ require_once($classpath); }else{ echo $classpath." not be found!"; } } $ani = new Animal();?>
Führen Sie wie in den beiden oben genannten Dateien PHP aus main.php
(1) Beim Ausführen von new Animal() wird festgestellt, dass die Klasse Animal nicht definiert ist;
(2) Die Funktion __autoload wird ausgelöst, die die Datei Animal.php einführt; (3) Instanziierung erfolgreich.
Okay, nachdem Sie nun die Rolle der __autoload-Funktion verstanden haben, werfen wir einen Blick auf die Rolle der spl_autoload_register-Funktion.
Die Rolle der Funktion spl_autoload_register besteht darin, die benutzerdefinierten Funktionseinstellungen durch die Funktion __autoload zu ersetzen (Hinweis: Wenn __autoload und spl_autoload_register gleichzeitig in der Datei erscheinen, hat spl_autoload_register Vorrang).
Dann wird main.php in geändert Folgendes hat den gleichen Effekt:
#main.php<?php function myLoad($classname){ $classpath = "{$classname}.php"; if(file_exists($classpath)){ require_once($classpath); }else{ echo $classpath." not be found!"; } } spl_autoload_register("myLoad"); $ani = new Animal();?>Bei Verwendung des ThinkPHP-Frameworks ist es hilfreich, den Quellcode zu überprüfen, um die beiden Funktionen __autoload und apl_autoload_register zu verwenden. Diese beiden Funktionen werden zum automatischen Laden verwendet. , Datenquelle https://blog.csdn.net/gavin_new/article/details/52805811
Seine Hauptfunktion besteht darin, dass diese beiden Funktionen ausgelöst werden, wenn Ihre Quellcodedatei eine Datei verwendet, die nicht geladen wurde Diese entladene Datei
Die __autoload-Funktion von PHP ist eine magische Funktion. Wenn in einer PHP-Datei auf 100 Objekte verwiesen wird, muss die Datei mit 100 Klassendateien eingeführt werden Dies führt dazu, dass die PHP-Datei extrem groß wird. Es gibt also diese __autoload-Funktion.
#Animal.php<?php class Animal{}?>(1) Beim Ausführen von new Animal() wird festgestellt, dass die Klasse Animal nicht definiert ist;
#main.php<?php function __autoload($classname){ $classpath = "{$classname}.php"; if(file_exists($classpath)){ require_once($classpath); }else{ echo $classpath." not be found!"; } } $ani = new Animal();?>(2) Die Funktion __autoload wird ausgelöst, die die Datei Animal.php einführt; (3) Instanziierung erfolgreich.
Okay, nachdem Sie nun die Rolle der __autoload-Funktion verstanden haben, werfen wir einen Blick auf die Rolle der spl_autoload_register-Funktion.
Die Rolle der Funktion spl_autoload_register besteht darin, die benutzerdefinierten Funktionseinstellungen durch die Funktion __autoload zu ersetzen (Hinweis: Wenn __autoload und spl_autoload_register gleichzeitig in der Datei erscheinen, hat spl_autoload_register Vorrang).
Dann wird main.php in geändert Folgende Funktion hat den gleichen Effekt:
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zweier automatischer Ladefunktionen von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!