Explication détaillée de la façon dont PHP utilise _autoload pour charger automatiquement les instances de classe

伊谢尔伦
Libérer: 2023-03-12 08:10:01
original
1236 Les gens l'ont consulté

Lors de l'utilisation du mode OO de PHP pour développer un système, il est généralement d'usage de stocker l'implémentation de chaque classe dans un fichier séparé. Cela facilitera la réutilisation de la classe et sera également pratique pour la maintenance future. C'est aussi l'une des idées de base du design OO

Avant PHP5, si vous avez besoin d'utiliser une classe, il vous suffit de l'inclure directement en utilisant include/require
test.class.php

<?php 
class abc{ 
function construct() 
{ 
echo &#39;www.hzhuti.com; 
} 
} 
?>
Copier après la connexion


load.php
Le code est le suivant

<?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();//实现
自动加载
,很多框架就用这种方法
自动加载类
 
?>
Copier après la connexion


autoload()
Dans les projets réels, il est impossible d'écrire toutes les classes dans un fichier PHP, lorsque vous devez appeler une classe déclarée dans un autre fichier dans un fichier PHP, vous devez introduire ce fichier via include. Cependant, parfois, dans les projets comportant de nombreux fichiers, il est nécessaire d'inclure tous les fichiers de classe requis un par un. Un gros problème est de devoir écrire un long fichier d'inclusion<🎜 au début de chaque fichier de classe. . Peut-on importer le fichier php où se trouve cette classe lorsque nous l'utilisons ? Pour cela, PHP fournit la méthode autoload(), qui est automatiquement appelée lorsque l'on tente d'utiliser une classe qui n'a pas encore été définie. En appelant cette fonction, le moteur de script a une dernière chance de charger les classes requises avant que PHP n'échoue avec une erreur.
Un paramètre reçu par la méthode autoload() est le nom de la classe à charger, donc à ce stade, le nom de la classe doit correspondre au nom du fichier, tel que Person.php, le nom de la classe correspondant est Pserson .
Regardez un exemple complet ci-dessous

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!”; 
} 
}
Copier après la connexion

Après avoir défini deux classes à tester, nous écrirons un fichier de programme PHP en cours d'exécution contenant la méthode autoload() comme suit :

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();
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal