IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

set_error_handler : invalid callback ?! [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Points : 132
    Points
    132
    Par défaut set_error_handler : invalid callback ?!
    Bonjour,
    Je code une classe pour déboguer et gérer moi meme les erreurs PHP.
    Voici un extract de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function myDebug() {
                // surcharge la gestion classique par ma fonction
    	    set_error_handler('error_handler');
    	}
    // ma fonction perso pour traiter les erreurs
    function error_handler($errno, $errstr, $errfile, $errline) {
          switch ($errno) {
    	           case E_NOTICE :
    	            case E_USER_NOTICE :
                                      return 'notice';
    ....
     
    }
    J'ai suivi la doc php.net.
    Le problème est que lorsque j'appelle myDebug() j'ai ceci :
    Warning: set_error_handler() expects the argument (error_handler) to be a valid callback in Debug.class.php on line 377
    Pourquoi ?

    Merci =)

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 253
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 253
    Points : 8 544
    Points
    8 544
    Billets dans le blog
    17
    Par défaut
    Pas d'erreurs en faisant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    function myDebug() {
                // surcharge la gestion classique par ma fonction
    	    set_error_handler('error_handler');
    	}
    // ma fonction perso pour traiter les erreurs
    function error_handler($errno, $errstr, $errfile, $errline) {
     
    }
     
    myDebug();
     
    ?>
    error_handler( ) est correctement définie lors de l'appel à myDebug( ) ??

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Points : 132
    Points
    132
    Par défaut
    Ah..
    J'ai commenté mon code dans error_handler() pour faire comme toi.
    J'appel ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $debug = new myDebug();
    // ou $debug->myDebug();
    J'ai toujours la meme chose
    Warning: set_error_handler() expects the argument (error_handler) to be a valid callback in Debug.class.php on line 377
    Quel est la définition d'un 'valid callback' ?!

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 253
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 253
    Points : 8 544
    Points
    8 544
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par jeremm Voir le message
    Ah..
    J'ai commenté mon code dans error_handler() pour faire comme toi.
    J'appel ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $debug = new myDebug();
    // ou $debug->myDebug();
    J'ai toujours la meme chose
    ??

    Quel est la définition d'un 'valid callback' ?!
    http://fr3.php.net/manual/fr/languag...types.callback

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Points : 132
    Points
    132
    Par défaut
    Ok, donc un simple echo 'hello world' devrait fonctionner en théorie, mais ca ne fonctionne pas ici. Toujours le meme warning.

    Je recolle mon code un poil modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class myDebug {
           function __construct() {
    	    set_error_handler('error_handler');
    	}
           public function error_handler($errno, $errstr, $errfile, $errline) {
    	   echo 'ca marche';
              return true;
           }
    }
    /*    fichier test.php :       */
    $debug = new myDebug();
    Résultat :
    Warning: set_error_handler() expects the argument (error_handler) to be a valid callback in Debug.class.php

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Points : 132
    Points
    132
    Par défaut
    Alors là.. J'ai rajouté des contrôles dans mon constructeur :

    sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    is_callable('error_handler') => false
    function_exists('error_handler') => false
    method_exists($this, 'error_handler') => true
    Personne à une idée ? Pourquoi n'est-elle pas 'appellable' ?!

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Vu que c'est une méthode, sa définition devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set_error_handler(array($this, 'error_handler'));

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 310
    Points : 132
    Points
    132
    Par défaut
    Parfait ça fonctionne ! Merci !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/02/2008, 14h01
  2. Réponses: 4
    Dernier message: 14/02/2008, 12h38
  3. [c# 2.0] Invalid postback or callback argument
    Par tscoops dans le forum ASP.NET
    Réponses: 4
    Dernier message: 22/11/2007, 09h24
  4. Réponses: 3
    Dernier message: 08/08/2007, 13h59
  5. Invalid postback or callback argument
    Par chaouki_2000 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 23/03/2007, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo