Entièrement d'accord ... cela dit ton argument sur le sujet est auto destructeur ... tu ne peux pas considérer faire une utilisation professionnelle d'une apli développée avec une version 5.4 Alpha 0.2 ....Peut-être précisément parce que tu n'as pas encore accordé à PHP un label « Professionnel ». À l'occasion d'une soirée restau de ViPhP, c'est Cyruss(*) qui nous avait évoqué cet aspect en nous disant (je paraphrase de mémoire) : «faire un site internet, c'est quasiment à la portée du premier couillon venu, mais si on est (ou se veut être) un développeur, il ne faut pas penser « site web » mais application logicielle » et je suis complètement d'accord avec lui. Et si tu te considères comme développeur, ce serait bien d'avoir des arguments de développeur et pas des arguments d'intégrateur pour défendre ton point de vue sur les traits.
sinon, franchement, je songe grandement à l'intégration à court termes (lors de la sortie d'une version stable) des traits qui sont selon moi une bonne idée !...
Description du concept ::
Je bosse à un échelon (on est 4 ... donc c'est pas trop compliqué ^^) qui me permet de définir le fonctionnement de l’application, je défini la structure conceptuelle des objets, défini les interfaces, et autres contraintes fonctionnelles des objets.
Donc, lorsqu'une apli remonte buggé il est rapide de la passer dans une batterie de tests pour vérifier le respect de son fonctionnement.
et il m'est possible de forcé l'implémentation de méthodes qui sont présentes exclusivement dans les classes destinées à l'héritage horizontal.
les traits servent donc selon moi à définir des propriété et méthodes communes à plusieurs objets dont les parent (héritage vertical) n'ont pas la nécessite de diffuser à l'ensemble de leurs héritiers ...
ex : 7 objets A, B, C, D, E, H et T
A et B sont des héritiers (extends) de H
C et D sont héritiers de E qui est Héritier de H
B et D ont des méthodes communes ... je leurs joins un trait T plutôt que de faire hériter tous mes objets de ses méthodes ou de dupliquer mon code!....
Ôte-moi d'un doute : tu développes des sites web ou tu intègres des CMS tout faits et vaguement bidouillés selon les besoins ponctuels ? Parce que dans ce cas je peux comprendre que ce soit une cause supplémentaire de difficultés de lecture de code : si on intègre ce genre de méthodologies dans un Joomla ou un Wordpress et que tu arrives de moins en moins simplement à les personnaliser, je conçois volontiers que ça te hérisse le poil.
dans ce cas là, justement, tu pourrait facilement modifier le comportement des méthodes natives à la solution en ne faisant qu'ajouter use maClasseDeMethodesPerso au lieu de taper directement dans le code source tortueux de l'apli !....
Ainsi, une mise à jour serait rapidement intégré !...
Toujours pour les mises à jour, l'héritage horizontale permettrait d'envisager des mise à jours progressives par patchs avant intégration définitive dans le corps de l'apli ...