Page 1 sur 1

Comment cela s'appelle t'il ?

Posté : 18 avr. 2009, 20:36
par Lirio
Voila mon problème : je suis en train de creer un petit framework php, et j'ai redigé un package ... mais je ne sais pas comment l'appelé.
L'idée est la suivante : le pattern Template correspond à des algorithmes dont les methodes sont définies pas héritage.
Mon "pattern" fait l'inverse: il étend les classes de manière automatique via des methodes predefines.

Par exemple, nous connaissons tous le bout de code fournit par php pour creer des singletons.
On trouve cela ici : http://www.manuelphp.com/php/language.o ... gleton.php
Disons que l'on appelle cette classe "MonSingleton" plutot que "Exemple"

Alors en utilisant la fonction
Lite::extend('Pdo', 'MonSingleton', 'PdoSingleton');

nous obtenons une nouvelle classe 'PdoSingleton', étendant 'Pdo' et implémentant le masque 'MonSingleton'.

En somme, c'est une sorte de pattern Template, mais "à l'envers".
Mais est-ce que cela porte un nom bien precis ?
Pour le moment, j'appelle cela des "design", mais seulement parce que j'aime bien ce nom.
:D

Posté : 18 avr. 2009, 20:46
par Nagol
barf tu devrais pas t'en soucier, je faisais du mvc 5 ans avant de savoir comment ca s'appelait :)

Posté : 18 avr. 2009, 21:02
par Sékiltoyai
barf tu devrais pas t'en soucier, je faisais du mvc 5 ans avant de savoir comment ca s'appelait :)
Ah, j'ai fait la même avec l'AJAX :D

Posté : 20 avr. 2009, 10:34
par Hywan
Hey :-),

Au passage, la construction dynamique de structure n'est pas possible en PHP. Je veux dire, tu ne peux pas générer une classe à la volée (sans plomber les perf'). Donc je suis curieux de voir le code de « extends » … :-k.

Posté : 20 avr. 2009, 10:44
par naholyr
Bah c'est de la génération de code tout ce qu'il y a de plus banal, ça ne devrait pas plomber les perfs du moment que c'est mis en cache.

Tiens, tant qu'on en est à présenter des trucs horribles-qui-ne-portent-pas-de-nom-officiel-sans-doute-parce-que-c-est-vraiment-caca, je vous présente l'héritage dynamique :
$classeMere = 'MaClasseAMoi';

class UneAutreClasse extends $classeMere // ah zut, c'est pas possible :(

// Qu'à cela ne tienne !

eval('class MaClasseIntermediaire extends '.$classeMere.' { }');

class UneAutreClasse extends MaClasseIntermediaire // wouhou :)
Pas mal dans le genre gore hein ? :P Bon on rigole on rigole, mais n'empêche que ça peut servir ;)

Posté : 20 avr. 2009, 10:55
par Hywan
Euh, si tu as besoin de faire ça, c'est que tu as un soucis quelque part. On peut résoudre ces problèmes plus proprement … mais c'est sûr qu'on regrette le C++ et ses macros :-(.

Posté : 20 avr. 2009, 11:19
par Lirio
Bah c'est de la génération de code tout ce qu'il y a de plus banal, ça ne devrait pas plomber les perfs du moment que c'est mis en cache.
C'est l'idée. :D
:idea: C'est un peu comme l'ORM - on construit une fois, et l'on reutilise ensuite.

En fait, les designs servent essentiellement à augmenter un peu la réutilisabilité de mon code.