je suit dilemme:PHP __autoload ne fonctionne pas au sein de la fonction de traitement de tampon de sortie
ob_start('processBuffer');
function processBuffer($buffer){
$betterBuffer = SomeClass::doSomething($buffer);
return $betterBuffer;
}
function __autoload($className){
if($className == 'SomeClass'){ include_once 'some_class.php'; }
}
Si la SomeClass de classe doit être chargée dans processBuffer pour la première fois, il ne fonctionne pas, mais il ne fonctionne que si elle a dû être chargé avant l'exécution de la fonction processBuffer. Pourquoi donc? Actuellement, pour contourner ce problème, je dois faire ce qui suit:
__autoload('SomeClass');
ob_start('processBuffer');
Comment puis-je résoudre ce problème?
Vous ne devriez pas avoir besoin d'appeler directement la fonction '__autoload()'; le simple fait de le définir devrait suffire à PHP pour l'appeler. Cependant, PHP recommande de ne plus utiliser '__autoload'; à la place, vous devriez écrire des fonctions et les passer dans 'spl_autoload_register()'. C'est mieux pour un certain nombre de façons, y compris en vous permettant d'avoir plusieurs fonctions de chargement automatique qui n'étaient pas possibles avec l'ancien mécanisme '__autoload()'. – Spudley
Il vaut même la peine de mentionner qu'une fois _anything_ appelle 'spl_autoload_register()' '-_autoload()' est complètement désactivé. – KingCrunch