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 :

comment r�cup�rer le message du vrai PHP ?


Sujet :

Langage PHP

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Ao�t 2006
    Messages
    120
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2006
    Messages : 120
    Par d�faut comment r�cup�rer le message du vrai PHP ?

    Je voudrais savoir comment r�cup�rer le vrai message de PHP (comme ci dessous) qui m'indique que la variable est prot�g� et n'est pas accessible :
    Fatal error: Cannot access protected property Pere::$_variableProtectedPere in E:\eclipse-SDK-3.3-win32\WorkSpace_Eclipse\www.lesite.com\TEST 2\testPublic.php on line 31

    En rajoutant une m�thode magique __set il ne m'affiche plus le message (ci dessus) de PHP mais mon message � moi qui est contenu dans une Exception :

    Y a t-il une solution ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    class Pere {
     
    	protected $_variableProtectedPere;
     
    	public function __construct() {
    	}
     
    	public function __set($var, $valeur){
    		try {
    			/** Juste une petite mise en forme du tableau pour ne pas avoir des elements de type NULL*/	
    				$clees = array_keys( get_class_vars(get_class($this)) );
    				$tab = array_flip($clees);
    				$tab = array_flip($tab);
     
    		/**
    		 * si il n'existe ou inaccessible pas alors on lance l exception 
    		 * */
    				if( !in_array($var, $tab )) {
     
    				//élément non trouvé
    				throw new Exception("La variable pour ecriture <b>$var</b> " .
    						"n existe pas dans la classe ".get_class($this)." !");
    			}
     
    				if( in_array($var, $tab )) {
     
    				//élément trouvé mais non accessible
    				throw new Exception("La variable <b>$var</b> " .
    						"est protege ou prive dans la classe ".get_class($this)." !");
    			}
    		}
    		catch (Exception $e) {
    			echo 'L\'erreur suivante a été générée : ' . "\n";
    			echo( $e->getMessage() );
    			echo("<BR />");
    		}
    	}
    }
     
    //Instanciation
    $objPere = new Pere();
    $objPere->_variableProtectedPere=5;

  2. #2
    Membre chevronn�
    Profil pro
    D�veloppeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par d�faut
    Le probl�me est que cette erreur n'est pas une Exception, mais une fatal error, qui arr�te donc l'ex�cution du script. M�me avec la d�finition d'un error handler custom, on ne peut pas surcharger la gestion de fatal errors (et donc, r�cup�rer le message r�el).

    Ceci dit, pour rajouter une pr�cision � ta probl�matique de variable protected, si tu utilises __set() alors en th�orie le probl�me ne se pose plus ...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    class Pere {
      // ...
     
      public function __set( $var, $val ) {
        $this->$var = $val;
      }
     
      public function __get( $var ) {
        return $this->$var;
      }
     
    }
     
    $pere = new Pere();
    $pere->_variableProtectedPere = 5; // via __set(), c'est une fonction membre qui accède à la donnée protected, donc pas d'erreur...
    echo $pere->_variableProtectedPere; // pareil pour __get()

  3. #3
    Membre �prouv�
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par d�faut
    ben tu n'as qu'� le re cr�er. Ou cr�er une exception memberNotFound qui affiche le message comme le fait php.

    Quelques pistes comme sa :
    __FILE__
    __LINE__
    __CLASS__
    debug_backtrace ou debugbacktrace je ne sais plus

    bye

Discussions similaires

  1. R�ponses: 13
    Dernier message: 07/12/2010, 12h00
  2. Comment r�cup�rer une variable javascript dans PHP
    Par pierrot10 dans le forum Langage
    R�ponses: 1
    Dernier message: 08/10/2010, 06h08
  3. Comment r�cup�rer mes messages de Outlook Express ?
    Par Lowelace dans le forum Thunderbird
    R�ponses: 1
    Dernier message: 16/03/2008, 22h35
  4. Comment r�cup�rer les messages d'erreurs ADO ?
    Par philnext dans le forum Bases de donn�es
    R�ponses: 6
    Dernier message: 05/04/2007, 14h01
  5. [MFC] Comment r�cup�rer ce message ?
    Par julien.nasser dans le forum MFC
    R�ponses: 15
    Dernier message: 24/05/2006, 11h38

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