PHP:5.2.x 的 __callStatic 替代方案

标签 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 时更容易迁移。对这种方法的想法?

谢谢!

最佳答案

如果想要这样做的唯一原因是双冒号的速度和主观吸引力,我会说要学会欣赏破折号和括号的道,大胆尝试并使用对象实例。您所说的“干净的代码外观”就像锤子裤子……一年很酷,几年后当您年长和聪明时就不那么酷了。 __callStatic() (IMVHO) 充其量只是一种不必要的次要便利,充其量是对糟糕类设计的一种解决方法。 :)

关于PHP:5.2.x 的 __callStatic 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4620534/

相关文章:

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 我无法通过Elastic Search进行AND请求

multithreading - 在多核嵌入式 Rust 中,我可以使用静态 mut 进行单向数据共享吗?

ReactJS - 从另一个组件调用一个组件方法

JavaScript 模式 : Context of Function Call

PHP/MYSQL 代码未回显成功

php - IIS 7 重写规则抛出 HTTP 错误 403.14 - 如果文件夹存在则禁止访问

java - Netbeans:访问静态字段 - 替换为类引用

class - 是否可以在 Raku 中访问类之外的静态方法和属性?

java - java模块可以调用c模块吗?