Dieses Mal erkläre ich Ihnen ausführlich die Verwendung des automatischen Ladens von PHP-Dateien . Welche Vorsichtsmaßnahmen gibt es bei der Verwendung des automatischen Ladens von PHP-Dateien? Das Folgende ist ein praktischer Fall. Werfen wir einen Blick darauf.
Traditionell müssen wir in PHP, wenn wir eine Klassendatei verwenden möchten, diese am Kopf des Dokuments anfordern oder einfügen:
<?php
require_once('../includes/functions.php');
require_once('../includes/database.php');
require_once('../includes/user.php');
...
Nach dem Login kopieren
Aber sobald es viele Dokumente gibt, die aufgerufen werden müssen , müssen Sie jedes Mal eine Zeile schreiben, was nicht schön aussieht. Gibt es eine Möglichkeit, das PHP-Dokument automatisch zu laden?
<?php
function autoload($class_name)
{
require "./{$class_name}.php";
}
Nach dem Login kopieren
Ja, Sie können die magische Funktion autoload() von PHP verwenden. Das obige Beispiel dient zum automatischen Laden der PHP-Datei im aktuellen Verzeichnis. In der Praxis verwenden wir es natürlich eher so:
<?php
function autoload($class_name)
{
$name = strtolower($class_name);
$path = "../includes/{$name}.php";
if(file_exists($path)){
require_once($path);
}else{
die("the file {$class_name} could not be found");
}
}
Nach dem Login kopieren
Das heißt, wir führen eine bestimmte Fallverarbeitung des Dateinamens durch und prüfen dann, ob die Datei vorhanden ist, bevor wir sie benötigen nicht vorhanden, benutzerdefinierte Informationen anzeigen.
Eine ähnliche Verwendung findet man häufig in privaten Projekten oder im Rahmen eines einzelnen Projekts. Da Sie bei der Mehrpersonenentwicklung nur eine Autoload-Funktion definieren können, ist es für verschiedene Entwickler unmöglich, unterschiedliche benutzerdefinierte Autoloader zu verwenden, es sei denn, alle stimmen im Voraus zu, eine Autoload-Funktion zu verwenden und Versionen zu synchronisieren, wenn Änderungen erforderlich sind .
Vor allem aus diesem Grund ist die gute Nachricht, dass diese Autoload-Funktion in Version 7.2 von PHP bald veraltet sein wird.
Warnung: Diese Funktion ist seit PHP 7.2.0 veraltet. Es wird dringend davon abgeraten, sich auf diese Funktion zu verlassen.
Dann wird sie durch etwas namens spl_autoload_register() ersetzt, das den Vorteil hat, dass es anpassbar ist. Mehrere Autoloader .
//使用匿名函数来autoload
spl_autoload_register(function($class_name){
require_once('...');
});
Nach dem Login kopieren
//使用一个全局函数
function Custom()
{
require_once('...');
}
spl_autoload_register('Custom');
Nach dem Login kopieren
//使用一个class当中的static方法
class MyCustomAutoloader
{
static public function myLoader($class_name)
{
require_once('...');
}
}
//传array进来,第一个是class名,第二个是方法名
spl_autoload_register(['MyCustomAutoloader','myLoader']);
Nach dem Login kopieren
//甚至也可以用在实例化的object上
class MyCustomAutoloader
{
public function myLoader($class_name)
{
}
}
$object = new MyCustomAutoloader;
spl_autoload_register([$object,'myLoader']);
Nach dem Login kopieren
Es ist erwähnenswert, dass die Verwendung von Autoload, unabhängig davon, ob es sich um autoload () oder spl_autoload_register () handelt, im Vergleich zu require oder include den Vorteil hat, dass der Autoload-Mechanismus ein verzögertes Laden ist, das heißt, dies ist nicht der Fall Es ist nicht so, dass alle diese Dateien für Sie aufgerufen werden, sobald Sie es ausführen, sondern nur diejenigen, die Sie verwenden, z. B. welche Dateien neu sind, werden die entsprechenden Dateien durch den Autoload-Mechanismus geladen.
Spl_autoload_register wird natürlich oft in Laravel verwendet, einschließlich verschiedener Pakete, wie zum Beispiel hier:
/**
* Prepend the load method to the auto-loader stack.
*
* @return void
*/
protected function prependToLoaderStack()
{
spl_autoload_register([$this, 'load'], true, true);
}
Nach dem Login kopieren
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie hier. Bitte achten Sie auf andere verwandte Themen im Artikel zur chinesischen PHP-Website!
Empfohlene Lektüre:
Detaillierte Erläuterung der Schritte zur Implementierung der Abhängigkeitsinjektion mithilfe der PHP-Klassenreflexion
So löschen Sie Dateien in einem Verzeichnis mit PHP unlink und rmdir Realize
Das obige ist der detaillierte Inhalt vonAusführliche Erklärung des automatischen Ladens von PHP-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!