2011-01-06 42 views
3

因此,我托管拒绝更新到PHP 5.3(这是恼人的,但在同一时间罚款;我很灵活),但唯一真正让我关闭的是没有__callStatic可用。PHP:__callStatic替代5.2.x

我有模块加载,我想巩固到一个类(即有一个类加载模块,然后通过调用主类__callStatic方法访问这些模块的功能),但当我从本地测试服务器上传到我的服务器,显然__callStatic方法不起作用。

是否有替代方案是还是静态?我喜欢干净的代码寻找双冒号(即registry::some_func())而不是$registry->some_func()

另一个不利的方面来这是我现在被迫使用职权范围内global关键字(其中由我自己的偏好是非常,非常凌乱)。

代码使用静态方法代替非静态方法的速度也非常快,并且反过来更加干净。

另外:我想过写__callStatic方法像往常一样与5.2,然后调用方法明确,例如registry::__callStatic("some_func"), array("val", "val2", "val3"),并保持事情变得更简单这样一来,即使是比较容易迁移,当他们升级到5.3 。关于这种方法的想法?

谢谢!

回答

1

如果想这样做的唯一原因就是速度和双冒号的主观诉求,我会说长大欣赏划线和括号之道,花了一大笔钱,并使用对象实例。你所说的“干净的代码外观”就像Hammer的裤子......一年很酷,几年后,当你年龄更大,更聪明时,也不会那么酷。 __callStatic()(IMVHO)充其量只是一种不必要的轻微便利,并且是对糟糕的班级设计的一种解决方法。 :)

+0

非常明智地说:]我同意这一点,这几乎是我自己的规格。如果需要的话,我总是可以使用一些小小的magic linux命令来替换整个代码(只需要移除`$`并用`::`替换` - >`。谢谢! – Qix 2011-01-06 22:48:02