Emploi du $this

Résolu
Utilisateur anonyme - 23 mars 2006 à 16:05
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 23 mars 2006 à 20:03
Faut m'expliker là...

class ClassMin{
public $Noms;
public $N;

public function __construct($Noms){

$this->N=$Noms;
echo var_dump($N); // retourne null !!!

$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


}

}

U just need a fuck for Ur violence

9 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
23 mars 2006 à 16:26
echo var_dump($this->N) = echo var_dump($Noms) = echo var_dump($this->Noms)

Voila.
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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!

}

}
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 mars 2006 à 16:28
Forcément, FhX est plus rapide...avec le peu qu'il écrit... ;-)
0
Utilisateur anonyme
23 mars 2006 à 16:36
ok g comrpi je rentre chez moi jsuis bonne a rien aujord'hu i

U just need a fuck for Ur violence
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
23 mars 2006 à 16:39
Ouais j'ai fais court :p

Peut être un peu trop court par moment ;)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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 :-)
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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 :)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
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.
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
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 !

Jamais essayé jusqu'à présent.
0
Rejoignez-nous