所以我的主机拒绝更新到 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 时更容易迁移。对这种方法的想法?
谢谢!
最佳答案
如果想要这样做的唯一原因是双冒号的速度和主观吸引力,我会说要学会欣赏破折号和括号的道,大胆尝试并使用对象实例。您所说的“干净的代码外观”就像锤子裤子……一年很酷,几年后当您年长和聪明时就不那么酷了。 __callStatic()
(IMVHO) 充其量只是一种不必要的次要便利,充其量是对糟糕类设计的一种解决方法。 :)
关于PHP:5.2.x 的 __callStatic 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4620534/