Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Definition des automatischen PHP-Lademechanismus und Anwendungsbeispiele

Detaillierte Erläuterung der Definition des automatischen PHP-Lademechanismus und Anwendungsbeispiele

伊谢尔伦
伊谢尔伦Original
2017-06-30 09:58:061269Durchsuche

Dieser Artikel stellt hauptsächlich das Prinzip und die Verwendung des PHP-objektorientierten automatischen Lademechanismus vor und analysiert die Prinzipien, zugehörigen Funktionen und Vorsichtsmaßnahmen des PHP-objektorientierten automatischen Lademechanismus Mechanismus in Form von Beispielen, Freunde in Not können sich darauf beziehen

Die Beispiele in diesem Artikel beschreiben die Prinzipien und die Verwendung des objektorientierten automatischen Lademechanismus von PHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Wenn Sie den objektorientierten Ansatz von PHP lernen, werden Sie eine Menge „Syntaxzucker“ kennen, bei dem es sich um magische Methoden handelt. Es gibt eine magische Methode zum Hinzufügen des automatischen Ladens, genannt: autoload();

Schauen Sie sich zuerst einen Code an

<?php
function autoload($classname) {
  $filename = "./". $classname .".php";
  include_once($filename);
}
new a();

Eine Klasse A wird hier instanziiert, aber es gibt keine Klasse A im Codeblock Der entsprechende Code sollte nach gesundem Menschenverstand einen Fehler melden, da die entsprechende Klasse A nicht gefunden wurde. Wenn Sie jedoch die automatische Ladefunktion autoload() verwenden, kann das Ergebnis anders ausfallen

Aus dem Flussdiagramm oben: Beim Instanziieren einer neuen Klasse auf der Seite wird zunächst der entsprechende Klassencode im aktuellen Verzeichnis gefunden. Wenn nicht, gehen Sie zum Autoload-Stack, um ihn zu finden die entsprechende automatische Ladefunktion, falls vorhanden, diese Klasse automatisch laden und einen Fehler auslösen, wenn nicht.

Dies ist ein Mechanismus, mit dem PHP automatisch geladen wird. Dann liegt der Fokus auf der Rückseite. Was ist, wenn ich mehrere automatisch geladene Funktionen habe?

PHP bietet eine SPL-Funktion

spl_autoload_register(); // 注册autoload函数

Offiziell: spl_autoload_register() bietet eine flexiblere Möglichkeit, das automatische Laden von Klassen zu implementieren. Daher wird die Verwendung der Funktion autoload() nicht mehr empfohlen und kann in einer zukünftigen Version veraltet sein.

Diese Funktion wird jedoch sowohl in PHPexecl als auch in PHPWord zum automatischen Laden verwendet, es gibt jedoch einen Unterschied zwischen den beiden! !

PHPexecl automatische Lademethode (Der Autor hier ist wahrscheinlich ein Python-Ingenieur, ansonsten gibt es keine geschweiften Klammern, verwenden Sie Einrückungen, um auszudrücken)

public static function Register() {
    $functions = spl_autoload_functions();
    foreach ( $functions as $function)
      spl_autoload_unregister($function);
    $functions = array_merge(array(array(&#39;PHPExcel_Autoloader&#39;,&#39;Load&#39;)),$functions);
    foreach ( $functions as $function)
      $x = spl_autoload_register($function);
    return $x;
}

PHPWord automatisches Laden Methode

public static function Register() {
  return spl_autoload_register(array(&#39;PHPWord_Autoloader&#39;, &#39;Load&#39;));
}

Beide dieser beiden Methoden können die Neudefinition des automatischen Ladens vervollständigen, aber was ist der Unterschied? Wenn der Code unabhängig ausgeführt wird, können beide Fälle ausgeführt werden, wenn er jedoch in ein Framework wie das YII-Framework integriert ist. Dann ist das automatische Laden von PHPWord ungültig.

Da das YII-Framework automatisch über eine Autoload-Funktion verfügt und diese bereits registriert ist, wenn der Code ausgeführt wird, lädt spl_autoload_register() die neue Autoload-Funktion am Ende der Autoload-Warteschlange. Wenn das gesamte PHPWord ausgeführt wird, ruft

den vom YII-Framework definierten automatischen Lademechanismus auf und ist nicht die Lademethode von PHPWord.

Wenn Sie sich also die Ladefunktion von PHPexecl ansehen, werden Sie es verstehen.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Definition des automatischen PHP-Lademechanismus und Anwendungsbeispiele. 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