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;