Maison >développement back-end >Problème PHP >Que faire si php __autoload échoue

Que faire si php __autoload échoue

藏色散人
藏色散人original
2021-09-14 10:43:192459parcourir

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.

Que faire si php __autoload échoue

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!

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