Pourquoi ça marche ?!!! - PHP - Programmation
Marsh Posté le 10-07-2005 à 09:55:44
C'est pas un bug, ça marche parceque c'est du php
Il n'y a aucun contrôle
Marsh Posté le 10-07-2005 à 10:07:39
attend Pascal j'arrive avec mon groupe !
Effectivement je trouve que c'est un gros défaut mais c'est que toi aussi tu as cherché. un attribut ne doit pas être utilisé depuis l'exterieur d'une classe il faut passer par une methode. Une règle consiste a mettre tous les attributs en private et faire des methodes accesseurs mais bon c'est en php4 que c'étais freestyle php5 je pense que ceci ne passe plus.
Marsh Posté le 10-07-2005 à 10:38:46
Berceker United a écrit : ...mais bon c'est en php4 que c'étais freestyle php5 je pense que ceci ne passe plus. |
Il est déjà en php5.1.0b2
Et tu crois qu'ils auraient cassé la retro-compatibilité pour ça
Marsh Posté le 10-07-2005 à 10:46:28
PHP roulaize \o/
Marsh Posté le 10-07-2005 à 10:58:05
On peut aussi faire ça en Javascript
Accessoirement, le Python aussi permet de faire ça, et je vois pas le problème, les accesseurs c'est pour le Java
Marsh Posté le 10-07-2005 à 11:11:18
masklinn a écrit : On peut aussi faire ça en Javascript |
Tu fais jamais de faute de frappe ?
Si tu écris $monObj->fauteFrappe=0 , php dit rien du tout
Marsh Posté le 10-07-2005 à 11:27:38
pascal_ a écrit : Tu fais jamais de faute de frappe ? |
Ca t'apprend à faire gaffe à tes conneries
Marsh Posté le 10-07-2005 à 12:01:32
masklinn a écrit : On peut aussi faire ça en Javascript |
Je sais pas ou tu as été cherché ça mais c'est une règle UML. Cela facilite la maintenance et en partie la sécurité des scriptes. Je vais prendre un simple sur lequelle je suis tombé et ceci ma sauvé.
Sur un site marchand les prix etais en francs lorsque nous sommes passés en Euro le client avait completement oublié de nous faire part de ce changement. Il fallait convertir les prix en euros. Probleme c'est que nous pouvions pas faire un update sur toutes les tables ayant un prix. Comment afficher les prix en euros alors qu'il n'est pas possible de changer les données. Ben heureusement que nous passions pas par ton raisonnement. il a juste fallut faire ceci dans la classe.
Code :
|
Marsh Posté le 10-07-2005 à 12:03:29
Berceker United a écrit : Je sais pas ou tu as été cherché ça mais c'est une règle UML. |
non plus
C'est une implémentation d'un paradigme de programmation appelé l'accès uniforme. A savoir que chaque accès à un objet doit se faire de manière controlée par une voie unique afin de permettre un maintien de l'encapsulation
Marsh Posté le 10-07-2005 à 12:27:41
Bha mince alors ! Et moi qui espérais que ce soit un bug qui puisse être corrigé ...
Perso je trouve ça anti-objet de pouvoir créer des propriété "à la volée" et surtout ça me pose un groooooos problème !!!
En fait je suis en train de me faire une sorte de petit "framework" à ma sauce pour faciliter le développement de site internet polyvalents. Grossomodo, ce "framework" gère un certain nombre de choses tout seul et permet de créer des éléments HTML complexes en quelques lignes de code PHP. Par éléments HTML complexes j'entend des treeview dynamique, des calendriés, des tableaux, etc... en fait j'essais surtout d'occulter au maximum le HTML (et le javascript) afin d'une part de maximizer la compatibilité entre les navigateurs et d'autre part de pouvoir me concentrer sur le code plutot que sur la mise en forme.
Bref, c'est un petit projet perso qui pour l'instant m'a permis de gagner beaucoup de temps et de mieux structurer mon développement, mais le probleme que je viens de souligner sur les propritétés qui se crées toutes seules m'ennui dans le sens où mon framework n'est plus un framework puisque qu'il n'est plus capable d'assurer la cohérence du code comme le ferait n'importe quel autre language orienté objet digne de ce nom.
De plus j'ai constaté que les fonction magique __get et __set ne fonctionnent pas du tout avec ces propriétés ainsi crées, c'est ce qui me fait dire que c'est pas bien normal mais bon ... mis à part ça, PHP5 c'est pas mal du tout.
En tous cas, si quelqu'un connait un moyen d'empêcher la création automatique de ces propriétés, je suis preneur.
Marsh Posté le 10-07-2005 à 12:29:45
FredEvans a écrit : |
Ca pose surtout des problème dans le cadre de typage fort
Soit un objet A et un objet B instance de la même classe
Tu rajoute une propriété sur B
A et B sont ils toujours instances de la même classe ?
On peut parfaitement avoir des langages objets avec ce type de propriétés. Mais effectivement, je suis pas fan
Marsh Posté le 10-07-2005 à 12:32:12
elianor a écrit : Ca pose surtout des problème dans le cadre de typage fort |
En python, oui
Marsh Posté le 10-07-2005 à 03:46:30
Bonjour tout le monde.
Je bricolais un ptit objet PHP5 tranquilou histoire de faire quelques essai avec les ArrayObject et en faisant une petite faute de frappe, je suis tombé sur un phénomène que je trouve pour le moins étrange pour de la POO.
Un ptit peu de code illustrera bien mon étonement :
Alors en fait, ce qui est super étrange c'est que l'on puisse assigner autant de propriété que l'on veut même si elles n'existent pas dans la class.
Quelqu'un pourrait il m'expliquer pourquoi ce code marche ? Nan parce que ça m'ennui en fait. Et pis si c'est un bug PHP5 il serait temps de le signaler car ça traine encore sur la version 5.1.0b2.
Message édité par FredEvans le 10-07-2005 à 03:49:06