函数指针指向静态类成员?

时间:2010-08-09 20:30:22

标签: php

如果我有一个像这样的PHP类:

class A
{
    public static function Method()
    {
        return "x";
    }
}

我知道我可以通过以下方式访问:

echo A::Method();

但是我该如何创建这个方法的函数引用呢?我试过这样的事情:

$func = "A::Method";
echo $func();

但是它给了我一个运行时错误。那么,这在PHP中是否可行?如果是这样,怎么样?谢谢! :)

2 个答案:

答案 0 :(得分:9)

两个选项:

  • call_user_func("A::Method");
  • $func = function () { return A::Method(); }; echo $func()

计划(但可能会发生变化)能够在下一版本的PHP中使用反射进行此操作:

$srm = new ReflectionMethod('A::Method');
$func = $srm->getClosure();
$func();

答案 1 :(得分:2)

类方法或对象方法的调用方式与普通函数不同。使用call_user_funccall_user_func_array

call_user_func(array('A', 'Method'));
call_user_func('A::Method'); // As of 5.2.3