PHP:__callStatic替代5.2.x

时间:2011-01-06 22:15:42

标签: php static call magic-methods

所以我有托管拒绝更新到PHP 5.3(这很烦人,但同时很好;我很灵活),但唯一真正让我感到震惊的是没有__callStatic可用。

我已经加载了模块,我想要整合到一个类(即有一个加载模块的类,然后通过调用主类'__callStatic方法访问这些模块的函数),但是当我上传时从本地测试服务器到我的服务器,显然__callStatic方法不起作用。

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

另一个缺点是,我现在被迫在函数中使用global关键字(根据我自己的喜好非常,非常凌乱)。

使用静态方法代替非静态方法,代码也非常快,反过来更干净。

另外:我已经考虑过像往常一样用5.2编写__callStatic方法然后显式调用方法,例如registry::__callStatic("some_func"), array("val", "val2", "val3")并保持简单,即使是更简单在升级到5.3时进行迁移。对这种方法的想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果想要这样做的唯一原因是双冒号的速度和主观吸引力,我会说增长以欣赏破折号和支架的道,采取暴跌并使用对象实例。你所说的“干净的代码外观”就像是Hammer的裤子......很酷的一年,几年之后,当你年龄更大,更聪明时,就不那么酷了。 __callStatic()(IMVHO)充其量是一种不必要的小便利,也是最糟糕的阶级设计的解决方法。 :)