17-07-2013, 03:05 PM
Citation :de toute façon, quand tu vas passer un objet à ta vue, que ce soit un array, un objet avec une propriété ou avec une méthode, si jamais 'message' devient 'messages' il faudra bien modifier les appels. Que ce soit $login['messages'], $login->messages ou $login->getMessages(), ça ne change rien. Donc je ne vois pas où tu veux en venir.Tu peux parfaitement: soit garder getMessages() renvoyant $login->messages, soit ajouter getMessage() et indiquer que "getMessages" est en phase d'être obsolète (et elle renvoie à getMessage).
Mouais, pour la convention, je ne suis pas d'accord... Ok, ca permet au "développeur avertis" de pas s'emmêler les pinceaux, mais ca n'a pas plus de poids qu'un feu rouge clignotant à un passage à niveau. S'il n'y a que le feu, certains passeront quand même, soit volontairement par défi (hacking?) soit involontairement parce qu'ils sont simplement aveugles (bugs).
Quand, comme en Python, y'a pas de private, ok, on peut "bricoler" avec la convention, mais cela ne "génère" pas le private. Le private, c'est effectivement 50% de "j'suis développeur et j'dois pas toucher à cela", mais cela compte aussi en terme de sécurité. Par exemple, un attribut privé "password" stocké dans l'objet pourrait être lu... Dans PHP aussi, ok, mais dans d'autres langages, on ne peut pas lire la variable (ou alors, il faut passer par bien plus lourd qu'un simple morceau de code dans le programme). En C++ par exemple, si tu n'as pas le code source de l'objet qui contient le "private", alors tu ne pourras pas le lire, nul part dans le code.
Dans le cas de PHP, un attribut comme "URL" pourrait être problématique s'il n'est pas en "écriture privée": un développeur malveillant pourra changer l'URL de l'objet, qui renverra peut-être le serveur ou le client ailleurs que sur le site désiré.
La convention me semble donc être un "bricolage", acceptable faute de mieux, mais là en PHP, je trouve qu'il y a mieux.
Mais c'est une impression personnelle peut-être.