【问题标题】:PHP call static workaround for PHP 5.2PHP 5.2 的 PHP 调用静态解决方法
【发布时间】:2011-03-08 13:01:46
【问题描述】:

有没有办法在 PHP 5.2 中获得 __callStatic 或类似功能?

我正在完成一个 PHP 框架,需要将此功能用于数据库 ORM 类。因此,例如,您可以使用下面的代码从数据库表的第 2 列和第 4 列获取数据,即根据您想要的动态声明方法(我猜像 rails)。

Class::find_by_col2_or_col4();

我已经在 PHP 5.3 中完成了这项工作,并且效果很好,但我正在尝试对那些使用 PHP 5.2 的人做同样的事情。

或者是否有其他方法可以使用 PHP 5.2 检索静态方法和参数的名称?

谢谢。

【问题讨论】:

    标签: php


    【解决方案1】:

    不是静态的。从技术上讲,Rails、CakePHP 等不会静态调用这些类型的动态方法。不要进行哲学辩论,但如果需要向后兼容,您可以改变您的范式并使用__call()。在这种情况下,您将使用ModelObject->find_by_col2_or_col4 之类的对象进行调用。当然我知道这可能不是你想听到的。

    它是 PHP,可能有某种方法可以破解它,但我不相信存在原生方法。

    【讨论】:

    • 谢谢 Jason,我一直在寻找一种方法来为 PHP 5.2 完成这项工作,但似乎找不到任何破解或解决方法。也找不到任何黑客来检查正在调用的静态函数。无论如何,依赖 __callStatic 的功能仅对 Forms 和 Database ORM 模块是必需的,因此不需要在平台范围内。我猜对于无法切换到 5.3 的用户,他们将不得不使用 5.2 兼容的功能。他们仍然可以做任何事情,但不是以最酷的方式,例如数据库 ORM。干杯。
    • 祝你好运。听起来你的工作很整洁,可能值得升级。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多