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('PHPExcel_Autoloader','Load')),$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('PHPWord_Autoloader', 'Load')); }
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!