2009-12-21 5 views
4

J'ai la fonction set_error_handler() configurée pour appeler une fonction en cas d'erreur.Fonction set_error_handler n'appelant pas de chargement automatique

Dans cette fonction, j'ai ma propre mise en œuvre de la classe d'exception:

function acs_error_handler($errno, $errstr, $errfile, $errline) {  
    throw new acs_exception($errstr, $errno);  
} 

Cela me donne l'erreur suivante:

Fatal error: Class 'acs_exception' not found

Pour une raison quelconque, cette fonction ne remet pas ma fonction de chargement automatique que j'ai mis en place à l'aide:

spl_autoload_register('__autoload'); 

Si j'ajoute la ligne:

__autoload('acs_exception'); 

avant d'appeler la classe dans la fonction d'erreur tout cela fonctionne.

Ma question est la suivante: La fonction __autoload() ne devrait-elle pas se déclencher lorsque j'appelle la classe acs_exception dans la fonction de déclenchement d'erreur?

+1

En passant, combien de traits de soulignement consécutifs pouvez-vous avoir dans un nom avant qu'il ne soit difficile de dire exactement combien il y en a? –

+0

Je devais ajouter _ supplémentaire parce que l'aperçu devenait tout foiré. – AntonioCS

Répondre

3

Here's a related PHP bug report.

Your error is triggered at compile-time, which disables autoload (and spl_autoload at the same time).

Won't be fixed for PHP5.3 as it may cause lots of other problems.

+0

C'est génial ... :( Merci pour l'info – AntonioCS

+0

J'ai corrigé le problème en appelant simplement la fonction autoload directement :) Merci encore – AntonioCS

1

Cela a été corrigé sur PHP 5.4.21 - maintenant les fonctions SPL autoload sont également déclenchés à partir des fonctions de gestion des erreurs! :)

Questions connexes