Maison >développement back-end >Problème PHP >Que faire si php __autoload échoue
php __autoload échoue car la fonction spl_autoload_register remplace la fonction __autoload dans Zend Engine par spl_autoload. La solution est de réenregistrer la fonction __autoload.
L'environnement d'exploitation de cet article : système Windows7, version PHP7.1, ordinateur DELL G3
Que dois-je faire si php __autoload échoue ?
La raison de l'échec de la fonction PHP __autoload (liée à smarty)
La fonction PHP __autoload peut réaliser un chargement automatique simple, mais après l'introduction de smarty, il a été constaté que la fonction __autoload n'était pas valide, et plus tard, il a été découvert que c'était la raison de la fonction spl_autoload_register.
Exécutez le code suivant :
function __autoload($name) { require 'class/'.$name.'.php'; echo '1'; } function autoload_test($name) { echo '2'; } spl_autoload_register('autoload_test'); $ca=new Ca();
Le résultat est la sortie 2. Vous pouvez voir que la fonction __autoload n'a pas été exécutée. L'analyse du site officiel est la suivante : Si la fonction __autoload() a été implémentée dans votre programme, elle doit l'être. explicitement enregistré dans la file d'attente _ _autoload(). Parce que la fonction spl_autoload_register() remplacera la fonction __autoload() dans Zend Engine par spl_autoload() ou spl_autoload_call().
Pour que le code fonctionne correctement, vous devez réenregistrer la fonction __autoload :
function __autoload($name) { require 'class/'.$name.'.php'; echo '1'; } function autoload_test($name) { echo '2'; } spl_autoload_register('autoload_test'); spl_autoload_register('__autoload'); $ca=new Ca();
Apprentissage recommandé : "Tutoriel vidéo PHP"
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!