Wenn Sie den OO-Modus von PHP zum Entwickeln eines Systems verwenden, ist es normalerweise üblich, die Implementierung jeder Klasse in einer separaten Datei zu speichern. Dies erleichtert die Wiederverwendung der Klasse und ist auch für die zukünftige Wartung praktisch. Dies ist auch eine der Grundideen des OO-Designs
Wenn Sie vor PHP5 eine Klasse verwenden müssen, müssen Sie diese nur direkt mit include/require
test.class.php
<?php class abc{ function construct() { echo 'www.hzhuti.com; } } ?>
load.php
Der Code lautet wie folgt
<?php class LOAD { static function loadClass($class_name) { $filename = $class_name.".class.php"; if (is_file($filename)) return include_once $filename; } } /** * 设置对象的自动载入 * spl_autoload_register — Register given function as autoload() implementation */ spl_autoload_register(array('LOAD', 'loadClass')); $a = new Test();//实现 自动加载 ,很多框架就用这种方法 自动加载类 ?>
autoload()
In tatsächlichen Projekten ist es unmöglich, alle Klassen einzuschreiben Wenn Sie in einer PHP-Datei eine in einer anderen Datei deklarierte Klasse aufrufen müssen, müssen Sie diese Datei über include einführen. In Projekten mit vielen Dateien ist es jedoch manchmal erforderlich, alle erforderlichen Klassendateien einzeln einzubinden. Ein großes Problem besteht darin, am Anfang jeder Klassendatei eine lange Liste zu schreiben . Können wir die PHP-Datei importieren, in der sich diese Klasse befindet, wenn wir sie verwenden? Zu diesem Zweck stellt PHP die Methode autoload() zur Verfügung, die automatisch aufgerufen wird, wenn versucht wird, eine noch nicht definierte Klasse zu verwenden. Durch den Aufruf dieser Funktion hat die Skript-Engine eine letzte Chance, die erforderlichen Klassen zu laden, bevor PHP mit einem Fehler abstürzt. Ein von der Methode autoload() empfangener Parameter ist der Klassenname der zu ladenden Klasse. Zu diesem Zeitpunkt muss der Klassenname also mit dem Dateinamen übereinstimmen, z. B. Person.php, der entsprechende Klassenname ist Pserson .
Sehen Sie sich unten ein vollständiges Beispiel an
class ClassA{ public function construct(){ echo “ClassA load success!”; } } //定义一个类ClassA,文件名为ClassA.php class ClassA{ public function construct(){ echo “ClassA load success!”; } } class ClassB extends ClassA { public function construct(){ //parent::construct(); echo “ClassB load success!”; } } //定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA class ClassB extends ClassA { public function construct(){ //parent::construct(); echo “ClassB load success!”; } }
function autoload($classname){ $classpath=”./”.$classname.'.php'; if(file_exists($classpath)){ require_once($classpath); } else{ echo ‘class file'.$classpath.'not found!'; } } $newobj = new ClassA(); $newobj = new ClassB();
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie PHP _autoload verwendet, um Klasseninstanzen automatisch zu laden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!