Heim  >  Artikel  >  Backend-Entwicklung  >  Einfaches Tutorial zur Verwendung des automatischen Lademechanismus autoLoad

Einfaches Tutorial zur Verwendung des automatischen Lademechanismus autoLoad

伊谢尔伦
伊谢尔伦Original
2017-07-01 09:37:011617Durchsuche

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:
Einfaches Tutorial zur Verwendung des automatischen Lademechanismus autoLoad

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 == &#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. 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 == &#39;http&#39;){ 
require_once("/home/yejianfeng/handcode/http.php"); 
} 
if($class == &#39;http2&#39;){ 
require_once("/home/yejianfeng/handcode/http2.php"); 
} 
}); 
spl_auto_call(&#39;http2&#39;); 
$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, &#39;autoload&#39;)); 

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!

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