|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Infographiste Inscription : novembre 2011 Messages : 1 ![]() |
Bonjour à tous,
Je me suis mis à l'apprentissage de le POO en PHP. Je suis en train de construire un site et je me demande quel est la meilleur façon d'accéder et de modifier les valeurs des variables de mes classes. J'ai commencé à écrire une méthode get() et une méthode set() pour chaque variable, mais j'ai une 20aine de variables et je trouve ça un peu répétitif pour faire finalement toujours la même chose. Alors en continuant mes lectures sur le PHP, je vois qu'il est possible d'utiliser des méthodes magiques qui me font la même chose en quelques lignes, quelque soit le nombre de variable. Code :
Merci d'avance |
||
|
|
00
|
|
|
#2 | ||||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 991 ![]() |
Les membre qui ont vocation à être disponibles sans limitation en dehors de la classe doivent être publiques.
Les méthodes __get et __set sont utiles notamment dans les cas suivants: 1 - on veut forcer un traitement (vérification par exemple) sur les données 2 - la classe doit exposer des attributs dynamiques (contenus dans une collection ou un tableau) 3 - on veut donner un accès à des membres publiques d'un objet décoré au sein de son wrappeur - etc. Exemples: 1 - Vérification et validation Code :
Code :
Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||||
|
01
|
|
|
#3 | |
|
Expert Confirmé
![]() ![]() |
Citation:
Du coup je ne mets plus aucun attribut public, c'est private/protected (à la rigueur) et ainsi je suis absolument sûr que tout sera accessible via des setters/getters. Plus à se faire des noeuds si l'on change la visibilité d'un attribut. C'est plus long (pénible) à écrire mais par contre côté évolution c'est total confort. D'ailleurs le rapport temps supplémentaire passé à écrire les setters/getters vaut largement le temps passé à refactoriser tout le code parce qu'on y a fait une modification au niveau de la visibilité d'un attribut. Puisque on y est et dans la même logique, j'en suis également revenu de la distinction des variables/fonctions selon leur visibilité. Plus aucun _ devant les variables ou fonctions private/protected. Là aussi j'ai bien dégusté : tomber dans une même fonction sur $_variable et un peu plus loin $variable par ce que le type était en panne d'inspiration... J'ai même eu dans une classe un protected $_variable; et dans la classe dérivée un public $variable; C'est vous dire les maux de tête. En interdisant ce foutu underscore, vous allez faire des économies d'aspirine, croyez-moi.
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
|
10
|
|
|
#4 | |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
Citation:
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre. Linus Torvalds |
|
|
|
00
|
|
|
#5 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 991 ![]() |
De toute façon, cela revient au même qu'un attribut soit en visibilité publique par implémentation ou non.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
01
|
|
|
#6 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : février 2008 Messages : 430 ![]() |
Sauf que le jour où tu veux ajouter un traitement au moment du get ou du set, tu dois ajouter tes accesseurs et modifier la portée de tes propriétés mais aussi modifier tous les appels à ces propriétés et là c'est vite la galère.
__________________
Le logiciel, c'est comme le sexe, c'est meilleur quand c'est libre. Linus Torvalds |
|
|
10
|
|
|
#7 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 991 ![]() |
C'est à ça que servent les méthodes magiques:
Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
10
|
Copyright © 2000-2012 - www.developpez.com