Heim >Backend-Entwicklung >PHP-Tutorial >Einfaches Tutorial zur Verwendung des automatischen Lademechanismus autoLoad
PHPs Autoload kann im Allgemeinen zwei Methoden verwenden: Autoload- und SPL-Methoden. Diese beiden Methoden haben unterschiedliche Verwendungsmethoden
Autoload-Verwendungsmethode 1:
Die am häufigsten verwendete Methode besteht darin, die Klasse anhand des Klassennamens zu finden und dann anzufordern _one
Der Code lautet wie folgt:
function autoload($class_name) { $path = str_replace('_', '/', $class_name); require_once $path . '.php'; } // 这里会自动加载Http/File/Interface.php 文件 $a = new Http_File_Interface();
Der Vorteil dieser Methode besteht darin, dass sie einfach und benutzerfreundlich ist. Natürlich gibt es auch Nachteile. Der Nachteil besteht darin, dass der Klassenname und der Dateipfad vereinbart werden müssen. Wenn die Dateistruktur geändert wird, muss der Klassenname geändert werden.
Autoload-Verwendungsmethode 2 (Direktzuordnungsmethode)
Der Code lautet wie folgt:
$map = array( 'Http_File_Interface' => 'C:/PHP/HTTP/FILE/Interface.php' ); function autoload($class_name) { if (isset($map[$class_name])) { require_once $map[$class_name]; } } // 这里会自动加载C:/PHP/HTTP/FILE/Interface.php 文件 $a = new Http_File_Interface();
Diese Methode Der Vorteil besteht darin, dass der Klassenname und der Dateipfad nur über eine Zuordnung verwaltet werden. Wenn sich also die Dateistruktur ändert, muss der Klassenname nicht geändert werden, sondern nur die entsprechenden Elemente in der Zuordnung.
Der Nachteil dieser Methode im Vergleich zur vorherigen Methode besteht darin, dass es sehr mühsam ist, diese Zuordnung zu verwalten, wenn zu viele Dateien vorhanden sind. Möglicherweise sollten Sie zu diesem Zeitpunkt die Verwendung von JSON oder einer separaten Datei für die Wartung in Betracht ziehen. Vielleicht würden Sie darüber nachdenken, ein Framework zu verwenden, um eine solche Zuordnung zu verwalten oder zu erstellen.
spl_autoload
Der größte Fehler von Autoload besteht darin, dass es nicht mehrere Autoload-Methoden haben kann
Okay, denken Sie über das folgende Szenario nach, auf das Ihr Projekt verweist Sie haben das Projekt einer anderen Person kopiert, Ihr Projekt verfügt über ein Autoload und das Projekt einer anderen Person verfügt ebenfalls über ein Autoload, sodass es zu Konflikten zwischen den beiden Autoloads kommt. Die Lösung besteht darin, Autoload so zu ändern, dass es eins wird, was zweifellos sehr umständlich ist.
Daher müssen wir dringend einen Autoload-Aufrufstapel verwenden, damit die Autoload-Serienfunktionen von spl angezeigt werden. Sie können spl_autoload_register verwenden, um mehrere benutzerdefinierte Autoload-Funktionen zu registrieren
Wenn Ihre PHP-Version höher als 5.1 ist, können Sie spl_autoload verwenden
Verstehen Sie zunächst einige Funktionen von spl:
spl_autoload ist die Standardimplementierung von _autoload(), es sucht nach $class_name(.php/.inc) in include_path
Spl_autoload implementiert das automatische Laden:
Der Code lautet wie folgt:
/*http.php*/ <?php class http { public function callname(){ echo "this is http"; } } /*test.php*/ <?php set_include_path("/home/yejianfeng/handcode/"); //这里需要将路径放入include spl_autoload("http"); //寻找/home/yejianfeng/handcode/http.php $a = new http(); $a->callname();
Spl_autoload_register
Registrieren Sie die Funktion im SPL-Autoload-Funktionsstapel:
Der Code lautet wie folgt:
/*http.php*/ <?php class http { public function callname(){ echo "this is http"; } } /*test.php*/ <?php spl_autoload_register(function($class){ if($class == 'http'){ require_once("/home/yejianfeng/handcode/http.php"); } }); $a = new http(); $a->callname();
spl_autoload_call
Rufen Sie die in spl_autoload_register registrierte aufrufende Funktion auf. Siehe das Beispiel unten
Der Code lautet wie folgt:
/*http.php*/ <?php class http { public function callname(){ echo "this is http"; } } /*http2.php*/ <?php class http { public function callname(){ echo "this is http2"; } } /*test.php*/ <?php spl_autoload_register(function($class){ if($class == 'http'){ require_once("/home/yejianfeng/handcode/http.php"); } if($class == 'http2'){ require_once("/home/yejianfeng/handcode/http2.php"); } }); spl_auto_call('http2'); $a = new http(); $a->callname(); //这个时候会输出"this is http2"
Die spl_auto_register-Funktion ermöglicht es uns, eine benutzerdefinierte Funktion für das automatische Laden zu verwenden, ohne Autoload zu verwenden. Diese Methode wird heute häufig verwendet.
Das AutoLoader-Modul von Zend verwendet diese Methode. Extrahieren Sie den entsprechenden Code
Der Code lautet wie folgt:
spl_autoload_register(array(CLASS, 'autoload')); public static function autoload($class) { ….. }
Das obige ist der detaillierte Inhalt vonEinfaches Tutorial zur Verwendung des automatischen Lademechanismus autoLoad. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!