Utilisateur anonyme
-
23 mars 2006 à 16:05
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 2015
-
23 mars 2006 à 20:03
echo var_dump($Noms); //ok.... Ca veut dire qu'on DOIT utiliser comme variable locale le meme nom de variable que celle passée en parametre C'est bizare non
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 mars 2006 à 16:27
Hello,
mais qu'est ce que tu nous fais là...? Lol :
class ClassMin{
public $Noms;
public $N;
public function __construct($Noms){
$this->N=$Noms;
//echo var_dump($N); // retourne null !!! Tu m'étonnes, la variable $N n'existe pas!
echo var_dump($this -> N); // ça marche pas mieux, là ? Ca, c'est la propriété N de ton objet
$this->Noms=$Noms;
echo var_dump($Noms); //ok.... Ca veut dire qu'on DOIT utiliser comme variable locale le meme nom de variable que celle passée en parametre C'est bizare non Nan, ça veut dire que $Noms est définie puisque c'est la variable que tu as passé comme argument dans ton constructeur, et elle n'a AUCUN rapport avec la propriété Noms de ton objet! Vire ton $this -> Noms = $Noms, et tu veras que tu auras AUSSI ton résulat...
echo var_dump($this -> Noms); // Là, on affiche bien le contenu de la propriété Noms de ton objet!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 mars 2006 à 16:44
Meuh nan meuh nan...
changement de sujet : tu sais, le truc dont je t'avais parlé pour ma classe de linéarisation d'un objet vers du xml ? Ben les propriétés privées sont prises en compte...
J'avoue que je ne comprends pas vraiment pourquoi, mais...tant mieux :-)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 23 mars 2006 à 16:59
Oui jme rappèle !
Etrange, c'est pas normal, normalement l'opérateur de portée aurait du te l'interdire sauf si tu possèdes une méthode __get() dans ta classe.
Un gros problème de toute facon en ce moment, tu fais des propriétés de type PRIVATE et tu fais un __get() pour retourner $this->$property. Et avec ca, tu récupères tout en lecture seul...
Jtrouve ca moyen en ce moment, va savoir ce qu'il se passe :)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 23 mars 2006 à 17:26
Nan nan, fausse alerte...ça marchait pas, lol.
je vais voir...
De plus, les récupérer, c'est une chose...mais les setter, après!! lol...mais je voudrais éviter les __set et __get...ceci dit, si je ne peux pas, je les ajouterai et ce sera un prérequis pour utiliser cette classe, et basta.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 23 mars 2006 à 20:03
Ah bon tu m'as fait peur.
Parce que le seul moyen de récupérer une propriété de classe sans l'instancier c'est bien l'opérateur de portée ::
Et lui, si y'a un private ou protected normalement il va te retourner une erreur. Je suis même pas sur qu'il soit capable de faire un __get() ou un __set()... sauf si tu l'appèles explicitement peut-être !