2010-08-09 107 views
9

如果我有一个PHP类像这样:函数指针指向静态类成员?

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

我知道,我可以访问此:

echo A::Method(); 

但我将如何去创造一个函数引用到这个方法?我试过这样的:

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

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

回答

8

两个选项:

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

它的计划(但它可能会更改)能在做到这一点与反思下一个版本的PHP:

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

谢谢,这回答了我的问题。 :) – qJake 2010-08-09 20:35:30

+0

'getClosure'方法在PHP 5.4中可用。请注意,尽管大约50%的服务器仍在使用5.3 – Twifty 2014-01-23 22:27:30