La RFC: Allow error_handler callback parameters to be passed by reference avait pour objectif de permettre aux gestionnaires d’erreurs configurés via set_error_handler() de modifier les informations de l’erreur gérée, en passant ses valeurs par référence.

L’objectif était de pouvoir y passer des informations contextuelles de type identifiant stocké en session, URL parcourue lors de l’erreur, etc. de la manière suivante:

    $_SESSION['username'] = 'john';
     
    function myErrorHandler($errno, &$errstr, $errfile, $errline)
    {
      if (isset($_SESSION['username'])) {
        $errstr .= ', username: '.$_SESSION['username'];
      }
      return false; // continue normal error handler
    }
     
    set_error_handler('myErrorHandler');

La RFC n’a pas convaincu et nos avis furent tous négatifs, principalement dû au fait que cette gestion pouvait être très facilement déléguée à la fonction utilisateur sans forcément avoir recours à des paramètres passés par référence. Nous avons donc posté en ce sens sur internals@.

La RFC proposait deux choix possibles : passer uniquement le message d’erreur par référence, ou bien l’ensemble des paramètres. Quoi qu’il en soit, avec 19 voix contre et 4 pour, la RFC a été rejetée.