Wenn wir Klassen in PHP verwenden, müssen wir sie vor der Verwendung laden, sei es über „require“ oder „include“, aber es gibt zwei Probleme, die unsere Entscheidung zum Laden beeinflussen
In PHP wird Autoload bereitgestellt, um uns das einfache Einbinden zu erleichtern Dateien, aber Autoload ist nicht in der Lage, alle Situationen wie gedacht zu bewältigen. Heute werden wir einige der Probleme mit Autoload aufzeichnen, auf die wir vor ein paar Tagen gestoßen sind.
Warum Autoload verwenden?
Wenn wir Klassen in PHP verwenden, müssen wir sie vor der Verwendung laden, sei es über die Methode „require“ oder „include“, aber das ist der Fall zwei Probleme sein, die unsere Entscheidung zum Laden beeinflussen.
Das erste ist, dass ich nicht weiß, wo diese Klassendatei gespeichert ist, und das andere ist, dass ich nicht weiß, wann ich diese Datei verwenden muss. Insbesondere wenn viele Projektdateien vorhanden sind, ist es unmöglich, am Anfang jeder Datei eine lange Anforderungszeichenfolge zu schreiben ...
Nach PHP5 können wir dieses Problem durch Autoload lösen. Und nach PHP5.1 wird auch spl_autoload_register() bereitgestellt, um einen umfassenderen Lademechanismus bereitzustellen.
Nachdem ich den Artikel Autoload in PHP gelesen habe, verstehe ich den Lademechanismus von Autoload. Wenn eine Klasse über new instanziiert wird, lädt PHP die entsprechende Datei über die definierte Autoload-Funktion. Wenn Sie erweitert oder implementiert und muss andere Klassendateien verwenden, führt PHP Autoload erneut aus, um die Klassendateien zu suchen und zu laden. Wenn es zwei Anfragen für dieselbe Klassendatei gibt, wird ein Fehler gemeldet. Der Autor des Originalartikels hat zur Veranschaulichung dieses Problems drei interessante Beispiele bereitgestellt, die durch Herunterladen des Quellcodes hier angezeigt werden können.
Im Allgemeinen gibt es viele Möglichkeiten, das Problem zu lösen, Dateien beim Laden am entsprechenden Speicherort zu finden. Die am häufigsten verwendete Methode ist die Angabe eines bestimmten Benennungsstandards.
Zends Methode
Zend empfiehlt eine der beliebtesten Methoden, nämlich den Pfad in den Dateinamen aufzunehmen. Zum Beispiel das folgende Beispiel:
// Main.class
function autoload($class_name) {
$path = str_replace('_', DIRECTORY_SEPARATOR , $ class_name);
require_once $path.'.php';
Methode „Alle einschließen“
Wenn Sie sich in einer Entwicklungsumgebung befinden und nicht viel Wert auf Geschwindigkeit legen, ist dies sehr nützlich Verwenden Sie diese Methode. Praktisch. Indem Sie alle Klassendateien in einem oder mehreren bestimmten Ordnern ablegen und sie dann durchsuchen, um sie zu finden und zu laden. Zum Beispiel:<?php $arr = array ( 'Project/Classes', 'Project/Classes/Children', 'Project/Interfaces' ); foreach($arr as $dir) { $dir_list = opendir($dir); while ($file = readdir($dir_list)) { $path = $dir.DIRECTORY_SEPARATOR.$file; if(in_array($file, array('.', '..')) || is_dir($path)) continue; if (strpos($file, ".class.php")) require_once $path; } } ?>
Zugehörige Dateien und Speicherorte
Eine andere Methode besteht darin, eineKonfigurationsdatei zwischen der Klassendatei und ihrem Speicherort zu erstellen, zum Beispiel:
// configuration.php array_of_associations = array( 'MainSuperClass' = 'C:/Main/Super/Class.php', 'MainPoorClass' = 'C:/blablabla/gy.php' );
<?php require 'autoload_generated.php'; function autoload($className) { global $autoload_list; require_once $autoload_list[$className]; } $x = new A(); ?>
Das obige ist der detaillierte Inhalt vonZusammenfassung der Nutzung von PHP Autoload. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!