【问题标题】:php progamiticly access static functionsphp 以编程方式访问静态函数
【发布时间】:2010-12-09 19:53:57
【问题描述】:

哪个更好,为什么:

call_user_func(array($class, $method), $params);

$class::$method($params);

第二种方法仅适用于 PHP 5.3。我在旧版本中抛出了一个意外的致命错误 T_PAAMAYIM_NEKUDOTAYIM。 (我的 ide 也认为它是语法错误。但它有效)

【问题讨论】:

  • 我的理解是,这两种方法都会产生相同的有效运行时方法来调用函数,并且应该执行大致相同。
  • 只要您的问题中包含“哪个更好”,您就应该向programmers.stackexchange.com 寻求答案。
  • 另外,第二个只能做将参数作为项目数组的方法。第一个可以访问采用任何类型参数的方法。在课堂上应该更容易阅读。

标签: php static static-methods


【解决方案1】:

如果可移植性对您很重要,那么显而易见的答案是您应该使用第一种方式。如果您知道您的目标始终至少为 PHP 5.3,那么您应该使用您自己感觉最舒服的方法。 $class::$method($params); 更短更干净,所以我自己去。

【讨论】:

    【解决方案2】:

    两者都很好。不过,我认为第二个在语法上更清晰。正如你所说,唯一的缺点是它需要 5.3+。

    【讨论】:

      【解决方案3】:

      在 PHP 5.3.0 中,还有 forward_static_call() 函数,虽然它的使用限制稍微多一些

      【讨论】:

        猜你喜欢
        • 2010-12-20
        • 1970-01-01
        • 2017-04-30
        • 1970-01-01
        • 1970-01-01
        • 2014-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多