Heim  >  Artikel  >  Backend-Entwicklung  >  Prinzip und Verwendung des objektorientierten automatischen Lademechanismus von PHP

Prinzip und Verwendung des objektorientierten automatischen Lademechanismus von PHP

墨辰丷
墨辰丷Original
2018-06-01 09:29:251417Durchsuche

Dieser Artikel stellt hauptsächlich das Prinzip und die Verwendung des objektorientierten automatischen Lademechanismus von PHP vor. Er analysiert die Prinzipien, zugehörigen Funktionen und Vorsichtsmaßnahmen des objektorientierten automatischen Lademechanismus von PHP in Form von Beispielen

Wenn Sie die objektorientierte Natur von PHP erlernen, werden Sie viele „Syntaxzucker“ kennen, also magische Methoden. Es gibt eine magische Methode, um automatisches Laden hinzuzufügen: __autoload();

Schauen Sie sich zuerst einen Code an

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

Instant it here Eine Klasse A wurde gefunden, aber es gibt keinen Code, der sich auf die Klasse A im Codeblock bezieht. Normalerweise sollte ein Fehler gemeldet werden, da die entsprechende Klasse A nicht gefunden wird. Wenn Sie jedoch die Funktion autoload() verwenden Ladefunktion, das Ergebnis ist möglicherweise nicht dasselbe wie

Aus dem Flussdiagramm oben: Beim Instanziieren einer neuen Klasse auf der Seite wird diese zuerst gefunden Wenn nicht, gehen Sie zu Autoload. Der Stack sucht nach der entsprechenden Autoloading-Funktion. Wenn nicht, wird ein Fehler ausgegeben.

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, Klassen zum automatischen Laden zu implementieren. Daher wird die Verwendung der Funktion __autoload() nicht mehr empfohlen und wird in einer zukünftigen Version möglicherweise nicht mehr unterstützt.

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, also verwenden Sie Einrückungen, um anzuzeigen)

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-Methode zum automatischen Laden

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

Diese beiden Methoden können die Neudefinition des automatischen Ladens abschließen, 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.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

PHP-Implementierung der nativen DOM-Objektmanipulations-XML-Methode

phpImplementierung Rückerstattungsfunktion der WeChat-Zahlung

phpComputer-Website-Zahlung der Alipay-Serie

Das obige ist der detaillierte Inhalt vonPrinzip und Verwendung des objektorientierten automatischen Lademechanismus von PHP. 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