Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1482 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [POO] Restreindre Get et Set à certaines valeurs ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[POO] Restreindre Get et Set à certaines valeurs ?

n°1548791
pot2yaourt
Posté le 25-04-2007 à 18:46:07  profilanswer
 

Salut à tous,
 
Voilà, j'aurais aimé savoir comment restreindre (si c'est possible) l'utilisation des accesseurs uniquement à certaines valeurs.
 
Par exemple, comme faire pour que je puisse lire la variable $var1 et pas $var2 et $var3... et modifier $var2 et $var3, mais pas $var1 ?
 

Code :
  1. private $var1;
  2. private $var2;
  3. private $var3;
  4. //Getter
  5. public function __get($value)
  6. {
  7. if(isset($this->$value))
  8. {
  9.  return $this->$value;
  10. }
  11. }
  12. //Setter
  13. public function __set($var, $value)
  14. {
  15. if(isset($this->$var))
  16. {
  17.  $this->$var = $value;
  18. }
  19. }


 
Merci d'avance pour vos réponses,
Lionel.


Message édité par pot2yaourt le 25-04-2007 à 20:24:26
mood
Publicité
Posté le 25-04-2007 à 18:46:07  profilanswer
 

n°1548861
flo850
moi je
Posté le 25-04-2007 à 21:19:27  profilanswer
 

public setVar1($value)
public setVar2($value)
 
...

n°1548902
masklinn
í dag viðrar vel til loftárása
Posté le 25-04-2007 à 22:55:47  profilanswer
 

Les __get et __set de PHP c'est de la daube :/

 

C'est merdique à utiliser comme properties de membres existants, autant passer par des getters et setters, c'est moche mais au moins c'est utilisable.

Message cité 2 fois
Message édité par masklinn le 25-04-2007 à 23:00:27

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1548909
gizmo
Posté le 25-04-2007 à 23:08:06  profilanswer
 

masklinn a écrit :

Les __get et __set de PHP c'est de la daube :/
 
C'est merdique à utiliser comme properties de membres existants, autant passer par des getters et setters, c'est moche mais au moins c'est utilisable.


 
Bof, ca dépend comment tu les utilises. Moi j'ai fait un truc a base de protected préfixés pour savoir s'ils sont read-only ou pas, s'il on un type forcé ou pas et éventuellement un sous-range. Le nom des membres internes est long, mais ca permet de travailler avec un minimu de contrôle sur ce que les gens veulent foutre comme valeur dans un objet. Ca évite pas mal de bug de faute de frappe également.

n°1549138
flo850
moi je
Posté le 26-04-2007 à 09:37:40  profilanswer
 

masklinn a écrit :

Les __get et __set de PHP c'est de la daube :/
 
C'est merdique à utiliser comme properties de membres existants, autant passer par des getters et setters, c'est moche mais au moins c'est utilisable.


+1
 
je prefere utiliser des getter et setter spécifique a chaque variable. PHP a pas mal progressé en POO , mais il y a encore un peu de marge  
 

n°1549157
gizmo
Posté le 26-04-2007 à 09:50:14  profilanswer
 

flo850 a écrit :

+1
 
je prefere utiliser des getter et setter spécifique a chaque variable. PHP a pas mal progressé en POO , mais il y a encore un peu de marge


euh ouais mais non, parce que si tu contrainds pas tes objets, tu peux avoir ca:
 

Code :
  1. class Toto {
  2.   public $variable;
  3. }
  4. $tutu = new Toto();
  5. $tutu->variable2='WTF?!';
  6. echo $tutu->variable2;


 
Et tout va marcher comme si de rien n'etait...

n°1549189
chani_t
From Dune
Posté le 26-04-2007 à 10:05:17  profilanswer
 

le fait de contraindre ne vas rien apporter à celui qui as crée la classe si ?
 
Je ne vois pas l'intérêt de contraindre si ce n'est pour que l'objet ne contienne et ne serve qu'a ce que le concepteur à prévus... ce qui ne vaut que pour les classes qui sont exportée.. (enfin c'est ma vision des choses.)

n°1549253
gizmo
Posté le 26-04-2007 à 10:08:52  profilanswer
 

Parce que tu ne fais jamais de faute de frappe? La contrainte, c'est pas juste pour faire joli, c'est aussi la pour reduire le temps de debugging.

n°1549260
flo850
moi je
Posté le 26-04-2007 à 10:13:41  profilanswer
 

C'est une bonne approche  de ne pas permettre d'acceder directement aux membre d'une classe. Ne serait ce que parceque le but de la classe est de permettre une certaine modularité, et que l'accès a un membre detruit cette portabilité  
 
Programmer proprement, ce n'est pas quelque chose qu'on fait pour les autres, c'est quelque chose qu'on fait pour gagner du temps

n°1549263
chani_t
From Dune
Posté le 26-04-2007 à 10:14:54  profilanswer
 

Ba si des fautes de frappes ça m'arrive bien évidement, mais il ne faut pas que le temps passé à contraindre la classe dépasse le temps gagné lors du debugging. barf .. à étudier donc :D

 

EDIT : Le fait de ne pas contraindre la classe, ne signifie pas que le code n'est pas propre, ni moins portable. Si tu fais une méthode pour accéder à chacune des variables de l'objet, à un moment ça va devenir super lourd (surtout si tu viens différencier la lecture et l'écriture).

Message cité 1 fois
Message édité par chani_t le 26-04-2007 à 10:18:50
mood
Publicité
Posté le 26-04-2007 à 10:14:54  profilanswer
 

n°1549267
gizmo
Posté le 26-04-2007 à 10:18:14  profilanswer
 

chani_t a écrit :

Ba si des fautes de frappes ça m'arrive bien évidement, mais il ne faut pas que le temps passé à contraindre la classe dépasse le temps gagné lors du debugging. barf .. à étudier donc :D


 
Allo la terre? les notions d'heritage, de final, ca te dis rien?

n°1549274
chani_t
From Dune
Posté le 26-04-2007 à 10:24:26  profilanswer
 

gizmo a écrit :

Allo la terre? les notions d'heritage, de final, ca te dis rien?


Ba si, ça me dis quelque chose, cependant j'avoue ne pas avoir encore eu l'occasion de mettre en oeuvre une classe nécessitant d'hériter d'une autre.. (ba chuis qu'un développeur PHP du dimanche ;) ). En même temps qu'est ce que ça change dans notre histoire ?  (pis te fache pas, j'essaie de comprendre ;) )

n°1549279
gizmo
Posté le 26-04-2007 à 10:31:11  profilanswer
 

bah tu fais une fois ta restriction sur ta classe abstraite et ensuite toutes tes autres classes en herite, et basta, plus besoin de refaire le bordel.

n°1549292
masklinn
í dag viðrar vel til loftárása
Posté le 26-04-2007 à 10:48:22  profilanswer
 

gizmo a écrit :

euh ouais mais non, parce que si tu contrainds pas tes objets, tu peux avoir ca:

 
Code :
  1. class Toto {
  2.   public $variable;
  3. }
  4. $tutu = new Toto();
  5. $tutu->variable2='WTF?!';
  6. echo $tutu->variable2;



Ouais mais ça ça a aucun rapport, tu peux faire un __get et un __set qui balancent une erreur/exception et c'est terminé [:petrus75]

Message cité 1 fois
Message édité par masklinn le 26-04-2007 à 10:55:01

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1549306
gizmo
Posté le 26-04-2007 à 11:04:21  profilanswer
 

masklinn a écrit :

Ouais mais ça ça a aucun rapport, tu peux faire un __get et un __set qui balancent une erreur/exception et c'est terminé [:petrus75]


bah ouais, c'est ce que je dit :o  
Sauf que dans mon cas, ca fait des trucs en plus pour la validation des donnees.

n°1550737
supermofo
Hello World !
Posté le 27-04-2007 à 17:02:35  profilanswer
 

__get et __set peuvent (au conditionnel) servir pour les objets fortement manipulables.
 
Mais il est clair qu on peut se poser des questions quand a leurs utilites.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [POO] Restreindre Get et Set à certaines valeurs ?

 

Sujets relatifs
Typage en PHP POOwindow.open avec des variables JS en GET
question POOHauteur des cellules en fonction de leurs valeurs?
Augmenter les valeurs d'une colonne de 10%[XSL]recuperer des valeurs
[VB]comment entre 3 valeurs faire apparaitre la plus basse?petit problème pour transfert de valeurs dans liste à choix multiple
recuperer toutes les valeurs d'un meme type de noeud[POO] Champ de texte et MVC (modèle vue contrôleur)
Plus de sujets relatifs à : [POO] Restreindre Get et Set à certaines valeurs ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR