Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erklärung des automatischen Ladens von PHP-Dateien

Ausführliche Erklärung des automatischen Ladens von PHP-Dateien

php中世界最好的语言
php中世界最好的语言Original
2018-05-19 10:42:101626Durchsuche

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');
...
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";
}
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");
    }
}
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('...');
});
//使用一个全局函数
function Custom()
{
  require_once('...');
}
spl_autoload_register('Custom');
//使用一个class当中的static方法
class MyCustomAutoloader
{
  static public function myLoader($class_name)
  {
    require_once('...');    
  }
}
//传array进来,第一个是class名,第二个是方法名
spl_autoload_register(['MyCustomAutoloader','myLoader']);
//甚至也可以用在实例化的object上
class MyCustomAutoloader
{
  public function myLoader($class_name)
  {
  }
}
$object = new MyCustomAutoloader;
spl_autoload_register([$object,'myLoader']);
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);
}
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!

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