Fonctions de callback : objet possible

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).




Laisser un commentaire