Heim >Backend-Entwicklung >PHP-Tutorial >Eingehende Untersuchung des automatischen Lademechanismus von PHP

Eingehende Untersuchung des automatischen Lademechanismus von PHP

伊谢尔伦
伊谢尔伦Original
2017-07-01 09:59:412029Durchsuche

Dieser Artikel ist eine detaillierte Analyse und Einführung in den Mechanismus zum automatischen Laden von PHP . Freunde, die ihn benötigen, können sich auf

1. Automatisches Laden in PHP-Methode beziehen
1. Verwenden Sie require, include,
require_once, include_once, um manuell zu laden. 2. Verwenden Sie Autoload zum automatischen Laden.
Implementierung des manuellen Ladens:

Wir können es verwenden, wenn nur wenige Dateien geladen werden müssen als Erster fertig. Das geht ganz einfach und stellt kein Problem dar.


Der Code lautet wie folgt:

require_once 'a.php';
require_once 'b.php';
require_once 'c.php';
Aber ist das noch in Ordnung, wenn viele Dateien geladen werden müssen? Was sollen wir tun, wenn wir zehn, zwanzig require_once oder mehr schreiben müssen?


Zu diesem Zeitpunkt können wir die Autoload-Methode verwenden, um unseren Code zu vereinfachen.

Implementierung des Autoload-Ladens:
Wir erstellen im Testverzeichnis eine in.php-Datei mit folgendem Inhalt.

Der Code lautet wie folgt:

Erstellen Sie dann eine Loader.php im Testverzeichnis mit folgendem Inhalt.
echo &#39;我是test下面的in.php<br />&#39;;


Der Code lautet wie folgt:

// 需要重载autoload方法,自定义包含类文件的路径  
function autoload($classname)  
{  
 $class_file = strtolower($classname).".php";  
 if (file_exists($class_file)){  
  require_once($class_file);  
 }  
}
@$test = new in(); // 执行到这里会输出 <SPAN style="FONT-FAMILY: Arial, Helvetica, sans-serif">我是test下面的in.php</SPAN>
Kein Problem, es hat funktioniert! Wir können auch andere Dateien zum Laden erstellen, aber was sollen wir tun, wenn viele Dateien benötigt werden und in Verzeichnisse aufgeteilt werden müssen?


Zu diesem Zeitpunkt müssen wir loader.php ändern, um die Zuordnung zu verwenden, um die zu ladende Datei zu finden.


Der Code lautet wie folgt:

function autoload($class_name) {
 $map = array(
  &#39;index&#39; => &#39;./include/index.php&#39;,
  &#39;in&#39; => &#39;./in.php&#39;
 );
    if (file_exists($map[$class_name]) && isset($map[$class_name])) {
        require_once $map[$class_name];
    }
}
new index();
Der Vorteil dieser Methode besteht darin, dass der Klassenname und der Dateipfad nur mit einer Zuordnung gepflegt werden, also wenn die Dateistrukturänderungen, nein Wenn Sie den Klassennamen ändern müssen, müssen Sie nur das entsprechende Element in der Zuordnung ändern.


Aber Autoload kann nur einmal in einem Projekt verwendet werden. Wenn Ihr Projekt auf ein Projekt anderer verweist, gibt es ein Autoload in Ihrem Projekt und es gibt ein Autoload in den Projekten anderer Personen, sodass die beiden Autoloads in Konflikt stehen. Die Lösung besteht darin, Autoload so zu ändern, dass es eins wird. Dies ist zweifellos sehr umständlich und hat ein einziges Anwendungsszenario.

Autoload-Ladeimplementierung von SPL:
Die Autoload-Funktionsreihe von SPL verwendet einen Autoload-Aufrufstapel, um mehrere benutzerdefinierte Autoload-Funktionen zu registrieren Verschiedene Anwendungsszenarien


• Erstellen Sie in.php im Testverzeichnis mit folgendem Inhalt


Der Code lautet wie folgt:

<?php
class in {
 public function index() {
  echo &#39;我是test下面的in.php&#39;;
 }
}
?>
Loader.php im Testverzeichnis mit folgendem Inhalt erstellen



Der Code lautet wie folgt:

<?php
set_include_path("/var/www/test/"); //这里需要将路径放入include
spl_autoload("in"); //寻找/var/www/test/in.php
$in = new in();
$in->index();
•spl_autoload_register funktioniert. Registrieren Sie sich im SPL-Autoload-Funktionsstapel, ändern Sie den Loader.php



-Code wie folgt:

function AutoLoad($class){
    if($class == &#39;in&#39;){
        require_once("/var/www/test/in.php");
    }
}
spl_autoload_register(&#39;AutoLoad&#39;);
$a = new in();
$a->index();
•spl_autoload_register registriert mehrere benutzerdefinierte Autoload-Funktionsanwendungen

Erstellen Sie zunächst den Mods-Ordner im Testverzeichnis und erstellen Sie inmod.mod.php mit folgendem Inhalt:


Der Code lautet wie folgt:

<?php
class inmod
{
 function construct()
 {
  echo &#39;我是mods下的in&#39;;
 }
}
Dann erstellen Sie es im libs-Ordner des Testverzeichnisses und erstellen Sie inlib.lib.php mit folgendem Inhalt:



Der Code lautet wie folgt:

<?php
class inlib
{
 function construct()
 {
  echo &#39;我是libs下的in&#39;;
 }
}
Erstellen Sie abschließend Loader.php im Testverzeichnis mit folgendem Inhalt



Der Code lautet wie folgt:

Das obige ist der detaillierte Inhalt vonEingehende Untersuchung des automatischen Lademechanismus 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