Traits (ou l'héritage horizontal)

ViPHP
ViPHP | 4674 Messages

19 févr. 2009, 14:12

Hey :-),

Ce matin, en lisant le blog de Julien Pauli, je suis tombé sur Traits et PHP : héritage horizontal. Pour en savoir plus, notre sympathique Julien nous propose de lire un article : Request for Comments: Horizontal Reuse for PHP. L'article est bien fait, on comprend les tenants et les aboutissants.

Julien Pauli nous précise que Traits était prévu pour PHP 6 à l'origine, mais ça a déjà été discuté pour PHP 5.3. A priori (remarque à pondérer), on pourrait le trouver dans PHP 5.4 (si cette version sort).

Malgré tout, on le trouve en patch dans le dépôt CVS PHP 6 [1], on peut dores et déjà l'essayer.

Mon avis sur les Traits ? Est-ce bien important :P ?
Ça répond un problème de réutilisation et de maintenance du code, comme d'habitude. Il restait quelques cas avec l'héritage simple où l'on devait dupliquer du code (berk, pas bien !). On avait différentes façons de résoudre le problème mais on avait quand même pas mal de code à écrire. Trait est une bonne façon de contourner ce problème, mais comme il est dit un peu partout, c'est une sorte de pseudo héritage multiple … Bah, pourquoi ne pas faire un réel héritage multiple alors ? Je sais que c'est très compliqué et que ça n'a pas que des avantages, c'est peut-être pourquoi PHP a choisi Trait. Mais il faudra revoir la syntaxe, car elle utilise les même mots-clés que pour les lambda-calculus, et ça, c'est mal …
Bon, c'est une RFC bien sûr, mais autant donner nos avis de suite ;-).

Donc, une sortie pour PHP 5.4 a priori, donc une intégration par les frameworks courants pour … 2011 ? Il faut que tout le monde soit à jour … On se refait un petit gophp5.3 au moins ?


[1] et pas CSV comme l'a mis Julien ;-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 5924 Messages

22 févr. 2009, 14:55

Ouais bah encore une nouvelle structure dans PHP, ça devient vraiment le bordel entre les interfaces, les classes, les namespace, et les traits…
Bref, Il va falloir commencer à penser à arrêter d'allourdir le langage…

Mammouth du PHP | 1668 Messages

22 févr. 2009, 15:11

Tout est relatif, c'est juste à maitriser, voilà tout...
Moi je trouve cette fonctionnalité plutôt bien, depuis le temps que je l'attend...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

22 févr. 2009, 16:50

C'est une fonctionnalité du langage qui peut permettre de répondre de manière simple à des besoins de factorisation que l'objet (qui en permet déjà beaucoup) ne permet pas (hors héritage multiple dont l'implémentation risque toujours d'être douteuse).

ViPHP
ViPHP | 4674 Messages

24 févr. 2009, 17:22

@Sékil : je comprends de quoi tu te plains. C'est vrai qu'inventer une nouvelle structure commence à alourdir le langage (surtout niveau syntaxe … le mot-clé trait, ça va, mais les use à gogo pff …). Par contre, ça ne me dérange pas qu'on ait les interfaces, les classes et les espaces de noms. C'est presque le minimum requit (sauf pour les interfaces). On va dire que l'idée est bonne mais pas la notation …

@Katagoto : « depuis le temps que je l'attend » (un « s » a « attends » … … …), euh, je développe beaucoup en objet et j'ai rarement eu besoin de ça. C'est un cas assez particulier (sans être forcément très très rare). Comme je l'ai dit, dans la plupart des cas, on peut contourner le problème de façon très propre. Tu as un exemple où tu n'as pas pu contourner le problème ?

@Naholyr : bah justement, je ne sais pas si l'héritage multiple est si lourd que ça :-k … Faudrait que je me penche sur les algos plus sérieusement un jour.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1668 Messages

24 févr. 2009, 18:09

Merci, en PHP je n'ai pas d'exemple malheureusement car depuis neuf mois je développe classique (je distingue deux but dans le code le premier, classique, n'implique aucun algorithme, ou de très simple, le second, je l'appel recherche, car j'entre dans un milieu inconnu que je tente de maitriser...), mais, il y a environs 6 mois, juste avant la reprise, je tentait de manipuler BOOST.Spirit (en C++), j'avais un double but : avoir une classe abstraite pour pouvoir me servir de ses filles car je devait les agencer dans un tableau et les appeler à "loisir" et je devais faire en sorte qu'elle soit fille d'une autre classe abstraite qui doit être directement mère pour être utilisé par BOOST.Spirit, d'où le fait que l'héritage multiple est une chose que j'attendais...

Voilà
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4674 Messages

24 févr. 2009, 18:18

Sauf qu'en C++, tu as l'héritage multiple (avec contexte, i.e. public, protégé et privé) :-P.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1668 Messages

24 févr. 2009, 18:23

Oui, justement, c'est pour ça que je l'attendais dans PHP :roll:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4039 Messages

24 févr. 2009, 20:45

pfff, moi je dis, un jour il vont nous mettre un bon vieux GOTO en php, et tout le monde sera bien.

D'ailleurs, en fait, c'est déjà fait.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 70 Messages

25 févr. 2009, 10:06

pfff, moi je dis, un jour il vont nous mettre un bon vieux GOTO en php, et tout le monde sera bien.

D'ailleurs, en fait, c'est déjà fait.
Cela ne peut que améliorer la visibilité du code :D

ViPHP
ViPHP | 1136 Messages

25 févr. 2009, 11:29

Perso , je trouve que c'est une fonctionnalité intéressante .
Source d'erreurs certes , mais qui reste utile si on l'utilise bien ..

Tout comme la programmation objet ... si l'on utilises des classes pour dire de faire de l'objet sans avoir réfléchi à la structure .. et bien cela revient à utiliser les traits là ou il n'y en a pas besoin ,
donc alourdir la lisibilité , maintenance ect ...

Aller , on va pas râler que notre langage préféré évolue :-) :D

ViPHP
ViPHP | 4674 Messages

25 févr. 2009, 11:39

Sauf pour les goto:roll:.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 févr. 2009, 12:12

pfff, moi je dis, un jour il vont nous mettre un bon vieux GOTO en php, et tout le monde sera bien.

D'ailleurs, en fait, c'est déjà fait.
ça a même été intégré dans PHP 5.3:
http://fr.php.net/goto
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 1668 Messages

25 févr. 2009, 12:38

Euh, à quoi ça sert goto ?
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4039 Messages

25 févr. 2009, 13:18

Euh, à quoi ça sert goto ?
A revenir 30 ans en arrière.

Heureusement que ça ne se sait pas trop. Un débutant qui découvrirait ça deviendrait vite complètement corrompu, s'il n'est pas mis en garde correctement.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.