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
jackloveoriginal
2018-05-22 14:21:591397parcourir

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();
?-->

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!

Déclaration:
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