Detaillierte Erklärung des automatischen Ladens von Klassen in PHP

藏色散人
Freigeben: 2023-04-09 18:16:02
nach vorne
3394 Leute haben es durchsucht

Automatisches Laden von Klassen in PHP

Zuvor haben wir das Prinzip des automatischen Ladens von Composer kennengelernt, das tatsächlich die automatische Ladefunktion von Klassen in PHP nutzt.

Das automatische Laden von Klassen in PHP basiert hauptsächlich auf den beiden Methoden __autoload() und spl_autoload_register().

Heute schauen wir uns kurz die Anwendung dieser beiden Methoden an.

__autoload()

Als magische Methode, die bald eliminiert wird, müssen wir sie nur verstehen. Wenn diese Methode in PHP7 verwendet wird, wird eine veraltete Warnung gemeldet und das System empfiehlt die Verwendung der Methode spl_autoload_register().

function __autoload($name){
    include __DIR__ . '/autoload/' . $name . '.class.php';
}

$autoA = new AutoA();
var_dump($autoA);
Nach dem Login kopieren

Wenn wir die AutoA-Klasse instanziieren, verfügt die aktuelle Datei nicht über diese Klasse und sie enthält oder erfordert keine anderen Dateien. Zu diesem Zeitpunkt wird automatisch die magische Methode __autoload() eingegeben. In der Methode __autoload() müssen wir nur die Datei einschließen, in der sich diese Klasse befindet.

spl_autoload_register()

Diese Methode hat derzeit die Funktion des automatischen Ladens von Klassen durch die obige magische Methode ersetzt. Es handelt sich um eine Methode in der spl-Erweiterungsbibliothek, die jetzt standardmäßig in PHP integriert ist. Sie können sie direkt verwenden.

Der Vorteil von spl_autoload_register() gegenüber __autoload() besteht darin, dass es ein __autoload() registrieren und eine __autoload()-Warteschlange implementieren und verwalten kann. Ursprünglich konnte es in einer Datei nur eine __autoload()-Methode geben, aber jetzt haben Sie eine Warteschlange.

Auf diese Weise müssen Sie nicht den gesamten Ladecode in eine __autoload()-Methode schreiben, sondern können mehrere spl_autoload_register() verwenden, um jede Klasse separat zu laden.

spl_autoload_register(function($name){
    include __DIR__ . '/autoload/' . $name . '.class.php';
});

$autoA = new AutoA();
var_dump($autoA);
Nach dem Login kopieren

Referenz: Eingehende Untersuchung der Composer-Prinzipien (2)

Verwenden Sie include oder include_once

Beim automatischen Laden müssen wir nur include verwenden, und die Klasse wird nicht wiederholt geladen.

spl_autoload_register(function($name){
    include __DIR__ . '/autoload/' . $name . '.class.php';
    echo $name, PHP_EOL;
});

$autoA = new AutoA();
var_dump($autoA);

$autoA = new AutoA();
var_dump($autoA);

$autoA = new AutoA();
var_dump($autoA);

$autoB = new AutoB();
var_dump($autoB);
Nach dem Login kopieren

Aus dem Code können wir ersehen, dass $name nur einmal ausgegeben wird, wenn die Klasse mehrmals instanziiert wird. Sie müssen sich also keine Gedanken über das Problem des wiederholten Ladens von Klassendateien machen. Darüber hinaus werden bei der Verwendung von Composer in einem großen Framework viele Klassen geladen, und die _once-Methode führt ebenfalls zu Effizienzproblemen.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des automatischen Ladens von Klassen in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!