Restreindre Get et Set à certaines valeurs ? [POO] - PHP - Programmation
Marsh Posté le 25-04-2007 à 22:55:47
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.
Marsh Posté le 25-04-2007 à 23:08:06
masklinn a écrit : Les __get et __set de PHP c'est de la daube |
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.
Marsh Posté le 26-04-2007 à 09:37:40
masklinn a écrit : Les __get et __set de PHP c'est de la daube |
+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
Marsh Posté le 26-04-2007 à 09:50:14
flo850 a écrit : +1 |
euh ouais mais non, parce que si tu contrainds pas tes objets, tu peux avoir ca:
Code :
|
Et tout va marcher comme si de rien n'etait...
Marsh Posté le 26-04-2007 à 10:05:17
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.)
Marsh Posté le 26-04-2007 à 10:08:52
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.
Marsh Posté le 26-04-2007 à 10:13:41
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
Marsh Posté le 26-04-2007 à 10:14:54
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
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).
Marsh Posté le 26-04-2007 à 10:18:14
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 |
Allo la terre? les notions d'heritage, de final, ca te dis rien?
Marsh Posté le 26-04-2007 à 10:24:26
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 )
Marsh Posté le 26-04-2007 à 10:31:11
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.
Marsh Posté le 26-04-2007 à 10:48:22
gizmo a écrit : euh ouais mais non, parce que si tu contrainds pas tes objets, tu peux avoir ca:
|
Ouais mais ça ça a aucun rapport, tu peux faire un __get et un __set qui balancent une erreur/exception et c'est terminé
Marsh Posté le 26-04-2007 à 11:04:21
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é |
bah ouais, c'est ce que je dit
Sauf que dans mon cas, ca fait des trucs en plus pour la validation des donnees.
Marsh Posté le 27-04-2007 à 17:02:35
__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.
Marsh Posté le 25-04-2007 à 18:46:07
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 ?
Merci d'avance pour vos réponses,
Lionel.
Message édité par pot2yaourt le 25-04-2007 à 20:24:26