Lors de l'utilisation du framework ThinkPHP, il est utile de visualiser les deux fonctions __autoload et apl_autoload_register lors de la visualisation de son code source, et ces deux fonctions sont utilisées pour le chargement automatique. Sa fonction principale est que lorsque 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 l'apparition de cette fonction, si. 100 objets étaient référencés dans un fichier PHP, le fichier devrait alors utiliser include ou nécessiter l'introduction de 100 fichiers de classe, ce qui rendrait le fichier PHP extrêmement volumineux. Il y a donc cette fonction __autoload.
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 trouvé la définition de la classe dans ce fichier, 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();?>
Comme les deux fichiers ci-dessus, exécutez php main.php
(1) Lors de l'exécution de new Animal(), on constate que la classe Animal n'est pas définie
(2) La fonction __autoload est déclenchée, ce qui introduit le fichier Animal.php ; (3) Instanciation réussie.
D'accord, après avoir compris le rôle de la fonction __autoload, jetons un œil au rôle de la fonction spl_autoload_register.
Le rôle de la fonction spl_autoload_register est de remplacer les paramètres de la fonction personnalisée par la fonction __autoload (remarque : lorsque __autoload et spl_autoload_register apparaissent dans le fichier en même temps, spl_autoload_register prévaudra)
Ensuite, en remplaçant main.php par le ce qui suit aura le même effet Fonction :
#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();?>
Sa fonction principale est que lorsque votre fichier de code source utilise un fichier qui n'a pas été chargé, ces deux fonctions seront déclenchées Load. ce fichier déchargé
La fonction __autoload de PHP est une fonction magique Avant que cette fonction n'apparaisse, si 100 objets sont référencés dans un fichier PHP, alors le fichier doit être introduit en utilisant 100 fichiers de classe, ce qui le fera. ce qui rend le fichier php extrêmement volumineux. Il y a donc cette fonction __autoload.
#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();?>
Bien, maintenant que vous avez compris le rôle de la fonction __autoload, jetons un œil au rôle de la fonction spl_autoload_register.
Le rôle de la fonction spl_autoload_register est de remplacer les paramètres de la fonction personnalisée par la fonction __autoload (remarque : lorsque __autoload et spl_autoload_register apparaissent dans le fichier en même temps, spl_autoload_register prévaudra)
Ensuite, en remplaçant main.php par le ce qui suit aura le même effet Fonction :
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!