Dieser Artikel stellt hauptsächlich die Analyse des automatischen Lademechanismus von PHP vor. Er hat einen bestimmten Referenzwert. Jetzt können Freunde in Not darauf zurückgreifen. Es gibt im Allgemeinen zwei Möglichkeiten, PHP zu verwenden autoload. Methoden: __autoload- und spl-Methoden. Diese beiden Methoden haben unterschiedliche Verwendungsmethoden
So verwenden Sie __autoload 1:Die am häufigsten verwendete Methode besteht darin, die Klasse anhand der Klassennamendatei zu finden und dann „require_one“
function __autoload($class_name) { $path = str_replace('_', '/', $class_name); require_once $path . '.php'; } // 这里会自动加载Http/File/Interface.php 文件 $a = new Http_File_Interface();
So verwenden Sie __autoload 2 (Direktzuordnungsmethode) $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();
spl_autoload
Der größte Fehler von __autoload ist, dass es nicht über mehrere Autoload-Methoden verfügen kann.
Okay, denken Sie an das folgende Szenario. Ihr Projekt. Es gibt ein __autoload im Projekt, und die Projekte anderer Leute haben auch einen __autoload, sodass die beiden __autoloads in Konflikt geraten. 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() sucht nach $class_name(.php/.inc) im include_path
Spl_autoload implementiert das automatische Laden:
/*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();
will Die Funktion wird registriert Schauen wir uns ein Beispiel direkt an:
/*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
rrree
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Lernen aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
in PHP Verwenden Sie html_entity_decode, um HTML-Entity-Escape zu implementieren
Das obige ist der detaillierte Inhalt vonAnalyse des automatischen Lademechanismus autoLoad von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!