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

Eingehende Untersuchung des automatischen Lademechanismus von PHP

伊谢尔伦
Freigeben: 2023-03-12 08:54:02
Original
2013 Leute haben es durchsucht

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';
Nach dem Login kopieren
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;;
Nach dem Login kopieren


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>
Nach dem Login kopieren
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();
Nach dem Login kopieren
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;;
 }
}
?>
Nach dem Login kopieren
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();
Nach dem Login kopieren
•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();
Nach dem Login kopieren
•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;;
 }
}
Nach dem Login kopieren
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;;
 }
}
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage