Maison > développement back-end > tutoriel php > Comment PHP charge-t-il automatiquement les deux fonctions __autoload et apl_autoload_register ?

Comment PHP charge-t-il automatiquement les deux fonctions __autoload et apl_autoload_register ?

jacklove
Libérer: 2023-03-27 12:30:02
original
1445 Les gens l'ont consulté

Cet article explique comment charger automatiquement les deux fonctions __autoload et apl_autoload_register via php ?

Lors de l'utilisation du framework ThinkPHP, il est utile de vérifier son code source pour utiliser les deux fonctions __autoload et apl_autoload_register, et ces deux fonctions sont utilisées pour le chargement automatique

Leurs principales fonctions sont : Quand votre fichier de code source utilise un fichier qui n'a pas été chargé, ces deux fonctions seront déclenchées pour charger le fichier déchargé

La fonction __autoload de php est une fonction magique Avant que cette fonction n'apparaisse, Si un fichier PHP référence 100 objets. , alors le fichier doit utiliser include ou require pour introduire 100 fichiers de classe, ce qui rendra le fichier PHP extrêmement volumineux. Il y a donc cette fonction __autoload.

Quand la fonction __autoload est-elle appelée ?

Lorsque le mot-clé new est utilisé pour instancier un objet dans un fichier php, si la classe n'est pas définie dans ce fichier php, la fonction __autoload sera déclenchée. A ce moment, vous pourrez introduire la définition du. fichier php de classe, puis il peut être instancié avec succès. (Remarque : Si l'objet à instancier a été trouvé dans ce fichier et que la définition de la classe a été trouvée, la fonction __autoload ne sera pas déclenchée)

#Animal.php

<!--?php
   class Animal{}
?-->
#main.php
<!--?php
  function __autoload($classname){
     $classpath = "{$classname}.php";
     if(file_exists($classpath)){
         require_once($classpath);
     }else{
         echo $classpath." not be found!";
     }
  }
  $ani = new Animal();
?--> 
如上述两个文件,运行php main.php
(1)运行到new Animal()时,发现 class Animal没有定义;
(2)触发了__autoload函数,该函数引进了Animal.php文件;
(3)实例化成功。
好了,了解完了__autoload函数的作用,再来看看spl_autoload_register函数的作用。
spl_autoload_register函数的作用就是将自定义函数设置替换为__autoload函数(注意:当文件中同时出现__autoload和spl_autoload_register时,以spl_autoload_register为准)
那么将main.php改成如下也有同样的作用:
#main.php
<!--?php
  function myLoad($classname){
     $classpath = "{$classname}.php";
     if(file_exists($classpath)){
         require_once($classpath);
     }else{
         echo $classpath." not be found!";
     }
  }
  spl_autoload_register("myLoad");
  $ani = new Animal();
?-->
Copier après la connexion

Cet article explique comment charger automatiquement les deux fonctions __autoload et apl_autoload_register via PHP Pour plus de contenu connexe, veuillez faire attention au site Web chinois de PHP.

Recommandations associées :

Méthodes de gestion et d'implémentation des erreurs PHP

PHP obtient la valeur spécifiée dans le tableau au niveau du comment plusieurs colonnes ?

Apprentissage de base de PHP : tableaux PHP et structures de données

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