2008-10-02 6 views
4

Je suis retourné au développement de php de Moose et je manque vraiment le modèle d'objet comme CLOS pour php. Existe-t-il une sorte de sucre syntaxique qui me permettrait d'écrire moins le code en php lorsque je traite des objets?Modèle d'objet comme CLOS pour PHP

Juste pour souligner cette exigence un peu plus. Je ne veux pas écrire une chose à plusieurs endroits. Je peux vivre avec une partie du code générée automatiquement, mais dans le code que je dois voir pour développer je ne veux pas voir d'informations redondantes qui sont juste encombrantes (pensez: macro LISP si vous avez vraiment besoin de plus d'analogie). Donc, cette partie peut également être appelée DSL si cela a plus de sens.

J'aimerais avoir au moins rôles (Mixins), et une sorte d'introspection sans réinventer la weel. Les générateurs de code et les chargeurs automatiques pourraient être une façon de résoudre au moins une partie de ce problème.

p.s. Pour JavaScript il y a Joose, donc une API similaire serait très utile.

+0

Mis à part les getters et setters automatiques, quels autres aspects de CLOS souhaitez-vous voir? Une grande partie de ce que j'ai pu lire sur CLOS au cours des 5 dernières minutes ne sera pas réalisable en PHP. –

Répondre

2

Il n'y a pas encore de mixins dans php mais il y a un RFC pour les traits qui fonctionneront à peu près de la même manière. L'utilisation de la surcharge pour __call peut vous permettre d'envoyer des méthodes à d'autres classes et de les faire ressembler à un mixin.

+0

Y a-t-il un espoir de l'avoir en PHP officiel bientôt? – dpavlin

1

Le Symfony project has a mechanism for mixins, permettant une programmation orientée aspect comme dans CLOS. Personnellement, je n'aime pas ce genre de piratage dans userland spacee (du moins pas avec PHP). Je pense que vous feriez mieux d'utiliser les fonctionnalités que le langage fournit, et peut-être attendre quelque chose comme des traits pour (peut-être) faire son chemin dans la langue.

+0

Bien que cela ressemble à un cadre sympa, il manque l'exigence initiale de moins de code, en particulier __construit dans l'exemple que vous avez lié. Après quelques lectures, il me semble encore complètement redondant. – dpavlin

+0

Je ne l'aime pas particulièrement non plus, mais c'est là, si vous le voulez. – troelskn

Questions connexes