Heim  >  Artikel  >  Backend-Entwicklung  >  Analyse des automatischen Lademechanismus autoLoad von PHP

Analyse des automatischen Lademechanismus autoLoad von PHP

不言
不言Original
2018-06-13 10:23:421305Durchsuche

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();

Der Vorteil dieser Methode ist, dass sie einfach und leicht anzuwenden 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.


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();
Der Vorteil dieser Methode besteht darin, dass der Klassenname und der Dateipfad nur mit einer Zuordnung gepflegt werden, also Wenn sich die Dateistruktur ändert, müssen Sie den Klassennamen nicht ändern, sondern nur das entsprechende Element in der Zuordnung ändern.

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 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:


Analyse des automatischen Lademechanismus autoLoad von PHPspl_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();

Spl_autoload_register

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 == &#39;http&#39;){ 
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. Schauen Sie sich das folgende Beispiel an __autoload. Es ist möglich, benutzerdefinierte Funktionen zum automatischen Laden zu verwenden. Diese Methode wird heute häufig verwendet.

Das AutoLoader-Modul von Zend verwendet diese Methode. Extrahieren Sie den entsprechenden Code

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:

So lösen Sie das Problem der Konvertierung von Unix-Zeitstempeln und -Daten in PHP basierend auf der DateTime-Klasse

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!

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