par
Ryle » 05 juin 2010, 14:20
Il est vrai qu'il suffit d'un message explicite et courtois pour que toute une communauté s'émeuve, abandonne tout ce qu'elle pouvait être en train de faire pour te consacrer tout son temps et t'apporter une solution dans l'heure... personnellement je n'en suis pas convaincu... en revanche, pense que l'ironie, le manque de courtoisie ou l'impatience ne l'y inciteront certainement pas.
Ceci étant, pour répondre à tes questions, effectivement, si tu implémentes la méthode __set() et que tu utilises un tableau pour stocker tous les attributs de ta classe, le développeur pour effectivement ajouter des attributs dans son instance.
En gros, ta classe ne change pas, en revanche tu permets au développeur d'ajouter des attributs à la volée, attributs qui ne lui serviront à rien, puisque tout ce qu'il pourra faire avec c'est venir les lire avec __get().
Si tu ne veux pas que le développeur puisse bricoler les instances de ta classe, il te faut déclarer chacun des attributs individuellement (d'où la remarque de Skikit). Et en ce qui me concerne, je préfère générer un getter et un setter pour chaque attribut. C'est plus long, mais je peux ainsi contrôler les valeurs qu'ils essayeraient de saisir (interdire une chaine quand j'attend un nombre, limiter la taille d'une chaine, le format d'une date, etc.)
Il est vrai qu'il suffit d'un message explicite et courtois pour que toute une communauté s'émeuve, abandonne tout ce qu'elle pouvait être en train de faire pour te consacrer tout son temps et t'apporter une solution dans l'heure... personnellement je n'en suis pas convaincu... en revanche, pense que l'ironie, le manque de courtoisie ou l'impatience ne l'y inciteront certainement pas.
Ceci étant, pour répondre à tes questions, effectivement, si tu implémentes la méthode __set() et que tu utilises un tableau pour stocker tous les attributs de ta classe, le développeur pour effectivement ajouter des attributs dans son instance.
En gros, ta classe ne change pas, en revanche tu permets au développeur d'ajouter des attributs à la volée, attributs qui ne lui serviront à rien, puisque tout ce qu'il pourra faire avec c'est venir les lire avec __get().
Si tu ne veux pas que le développeur puisse bricoler les instances de ta classe, il te faut déclarer chacun des attributs individuellement (d'où la remarque de Skikit). Et en ce qui me concerne, je préfère générer un getter et un setter pour chaque attribut. C'est plus long, mais je peux ainsi contrôler les valeurs qu'ils essayeraient de saisir (interdire une chaine quand j'attend un nombre, limiter la taille d'une chaine, le format d'une date, etc.)