类似于CLOS的PHP对象模型
时间:2020-03-06 15:03:10 来源:igfitidea点击:
我已经从Moose返回到php开发,我真的很想念CLOS,例如php的对象模型。是否有某种语法上的糖可以让我在处理对象时用php编写更少的代码?
只是为了强调此要求。我不想在几个地方写一件事。我可以忍受自动生成的部分代码,但是在开发时必须看到的代码中,我不想看到混乱的冗余信息(请考虑:如果我们确实需要更多类比,请使用LISP宏)。因此,如果这更有意义,那么也可以将其称为DSL。
我希望至少扮演一些角色(混搭人),并进行某种自省,而无需重新发明"怪胎"。代码生成器和自动加载器可能是解决此问题至少一部分的一种方法。
p.s.对于JavaScript有Joose,因此类似的API将非常有用。
解决方案
php中还没有mixins,但是有一个RFC,用于traits,它的工作原理大致相同。 http://wiki.php.net/rfc/traits
对__call使用重载可以使我们将方法分派到其他类,并使它看起来像mixin。
Symfony项目有一个用于混合的机制,允许像CLOS中一样进行面向方面的编程。就个人而言,我不喜欢在userland spacee中进行这种黑客攻击(至少不使用PHP)。我认为我们最好使用该语言提供的功能,并且也许要等待诸如特征之类的东西才能(可能)进入该语言。
还有一个新项目http://github.com/huberry/phuby,它在php中实现了角色!