Heim >Backend-Entwicklung >PHP-Tutorial >Wie lädt PHP automatisch die beiden Funktionen __autoload und apl_autoload_register?

Wie lädt PHP automatisch die beiden Funktionen __autoload und apl_autoload_register?

jacklove
jackloveOriginal
2018-05-22 14:21:591397Durchsuche

In diesem Artikel wird erläutert, wie die beiden Funktionen __autoload und apl_autoload_register automatisch über PHP geladen werden.

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.

Ihre Hauptfunktionen sind: Wann Ihre Quellcodedatei verwendet eine Datei, die nicht geladen wurde. Diese beiden Funktionen werden ausgelöst, um die entladene Datei zu laden.

Die __autoload-Funktion von PHP ist eine magische Funktion, bevor diese Funktion angezeigt wird, wenn eine PHP-Datei auf 100 Objekte verweist , dann muss die Datei include oder require verwenden, um 100 Klassendateien einzuführen, was dazu führt, dass die PHP-Datei extrem groß wird. Es gibt also diese __autoload-Funktion.

Wann wird die __autoload-Funktion aufgerufen?

Wenn das Schlüsselwort new 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 __autoload-Funktion 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();
?--> 
如上述两个文件,运行php main.php
(1)运行到new Animal()时,发现 class Animal没有定义;
(2)触发了__autoload函数,该函数引进了Animal.php文件;
(3)实例化成功。
好了,了解完了__autoload函数的作用,再来看看spl_autoload_register函数的作用。
spl_autoload_register函数的作用就是将自定义函数设置替换为__autoload函数(注意:当文件中同时出现__autoload和spl_autoload_register时,以spl_autoload_register为准)
那么将main.php改成如下也有同样的作用:
#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();
?-->

Einführung dazu Artikel So laden Sie die beiden Funktionen __autoload und apl_autoload_register automatisch über PHP. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

PHP-Fehlerbehandlungs- und Implementierungsmethoden

PHP ruft den im Array unter „Wie“ angegebenen Wert ab viele Spalten?

Grundlegendes Erlernen von PHP: PHP-Arrays und Datenstrukturen

Das obige ist der detaillierte Inhalt vonWie lädt PHP automatisch die beiden Funktionen __autoload und apl_autoload_register?. 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