Pour définir un gestionnaire d’erreurs personnalisé en PHP (il faut en avoir l’intérêt, car le système par défaut peut permettre déjà pas mal d’utilisations intéressantes), on utilise la fonction set_error_handler() dont voici la signature : mixed set_error_handler ( callback $error_handler [, int $error_types= E_ALL | E_STRICT ] )

On remarque le callback en premier argument, j’ai toujours imaginé y préciser une fonction, surtout que dans le cas de set_error_handler() la description des arguments enfonce le clou :

La fonction utilisateur doit accepter deux paramètres : le code d’erreur et une chaîne décrivant le code d’erreur.

Mais on peut aussi utiliser une méthode d’un objet (ce à quoi je n’avais jamais prêté attention).

Une méthode d’un objet instancié est passée comme étant un tableau, contenant un objet à l’index 0 et le nom de la méthode à l’index 1.

On se retrouve donc avec la possibilité de faire :


class Error{
public function errorHandle()
{
//do some stuff
}
}

$myErr = new Error('myrtilles');
set_error_handler(array($myErr, 'errorHandle'));

Vous le saviez, je parie ?


  1. L’excellent Julien Pauli (que tu a la chance de bien connaitre j’imagine) à d’ailleurs écrit un tutoriel à sa mesure à ce sujet :

    http://julien-pauli.developpez.com/tutoriels/php/observer-spl/

    Si mes souvenirs sont bon, on retrouve aussi un petit chapitre dédié à cette fonction dans le livre “PHP5 Avancé” (édition Eyrolles).




Leave a Comment