Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erklärung, wie PHP _autoload verwendet, um Klasseninstanzen automatisch zu laden

Detaillierte Erklärung, wie PHP _autoload verwendet, um Klasseninstanzen automatisch zu laden

伊谢尔伦
Freigeben: 2023-03-12 08:10:01
Original
1248 Leute haben es durchsucht

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

einbinden
<?php 
class abc{ 
function construct() 
{ 
echo &#39;www.hzhuti.com; 
} 
} 
?>
Nach dem Login kopieren


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(&#39;LOAD&#39;, &#39;loadClass&#39;)); 
$a = new Test();//实现
自动加载
,很多框架就用这种方法
自动加载类
 
?>
Nach dem Login kopieren


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!”; 
} 
}
Nach dem Login kopieren
Nachdem wir zwei Klassen zum Testen definiert haben, schreiben wir eine PHP-Laufprogrammdatei, die die autoload()-Methode enthält, wie folgt:


function autoload($classname){ 
$classpath=”./”.$classname.&#39;.php&#39;; 
if(file_exists($classpath)){ 
require_once($classpath); 
} 
else{ 
echo ‘class file&#39;.$classpath.&#39;not found!&#39;; 
} 
} 
$newobj = new ClassA(); 
$newobj = new ClassB();
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
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