Probleme de gestion d'erreur O.O

Probleme de gestion d'erreur O.O - PHP - Programmation

Marsh Posté le 01-07-2005 à 14:29:19    

Bonjour,
 
Voila, j'ai ce script de gestion d'erreurs et il y a un truc que je comprend pas :
 

Code :
  1. <?php
  2. class errorHandler
  3. {
  4. function __construct()
  5. {
  6.  set_error_handler(array($this,'getError'),E_USER_ERROR);
  7. }
  8. function getError($errno,$errstr,$errfile,$errline) // Pour les grosses erreurs
  9. {
  10.  error_log($errstr.' in '.$errfile.':'.$errline);
  11.  header('HTTP/1.0 500 Internal Server Error');
  12.  die();
  13. }
  14. }
  15. ?>


Et appellé par  

Code :
  1. require('error.class.php');
  2. $error = new errorHandler();
  3. trigger_error("test",E_USER_ERROR);


 
Et le gestionnair d'erreur que j'ai defini n'est pas utilisé ... c'est le gestionnaire par default de PHP qui se lance... On se demande si le probleme vient du fait que le constructeur "utilise" une metode pas encore lue par le parseur PHP (en inversant l'ordre du constructeur et de la metode dans le fichier php c'est toujours pareil). Est-ce que qqn a une idée de comment resoudre le probleme?
 
Le pire c'est que si on l'appelle par  

Code :
  1. require('error.class.php');
  2. $error = new errorHandler();
  3. set_error_handler(array($error,'getError'),E_USER_ERROR);
  4. trigger_error("test",E_USER_ERROR);


 
Ca marche tiptop ....  [:spamafote]  
 
Merci d'avance
 
Esox
 
P.S: Dans le htaccess au meme niveau que le script on a mis un ErrorDocument 500 ./erreur_output.html mais il ne se lance pas quand le header envoie l'erreur 500 ... Aurais-je loupé un episode?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 01-07-2005 à 14:29:19   

Reply

Marsh Posté le 01-07-2005 à 15:26:44    

J'y connais pas grand chose en PHP5, mais t'as essayé avec

Code :
  1. $error = &new errorHandler();

et

Code :
  1. set_error_handler(array(&$this, 'getError'), E_USER_ERROR);

? (en rajoutant des & donc)
 
Sinon, en essayant de passer par une méthode appelée par le constructeur ?


Message édité par sielfried le 01-07-2005 à 15:27:05

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 01-07-2005 à 15:46:41    

Donc, non a la 1ere solution (en PHP5 les variables sont passées automatiquement par reference), et non a la deuxieme mais je sais pas pourquoi ... :(


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 01-07-2005 à 16:03:52    

En PHP5 le constructeur serait pas par hasard appelé à la première utilisation de l'objet et non à sa création ? Je verrais pas l'intérêt, mais bon...
 
Si tu fous un echo dans ton constructeur là, t'obtiens bien un affichage ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 01-07-2005 à 18:00:27    

Non c'est bien appelé lors de l'instenciation..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 02-07-2005 à 09:44:01    

Personne voit le couac?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 02-07-2005 à 10:16:27    

Bon ben je viens juste de faire (ENFIN) la ptite bidouille pour avoir PHP5 (5.04) avec EasyPHP. J'ai donc testé ton truc et... ça marche très bien, il appelle le gestionnaire d'erreur de ta classe et me balance une 500. [:spamafote]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed