1

这是一个示例类:

public class example
 {
     private $foof;         

     public function __construct()
     {
          $this->foof = $this->foo;
     }

     public function foo($val=0)
     {
             // do something...
     }
 }

所以基本上,在示例代码的构造函数中,是否可以将类方法分配给变量?

最终我想要的是有一个关联数组,其中所有的类方法都带有别名……这在 php 中可能吗?

4

2 回答 2

5

在 PHP5.3+ 中(无论如何你都应该使用它!)你可以简单地创建一个匿名函数来调用你的方法:

$this->foof = function() {
    $this->foo(1);
};

但是,您不能使用它来调用它$this->foof()- 您必须先将它分配给一个变量:$foof = $this->foof; $foof();


在较旧的 PHP 版本中,您不能轻易做到这一点 -create_function()不会创建闭包,因此$this在那里不可用。

于 2012-05-31T21:41:43.330 回答
0

您不需要使用匿名函数。只需使用Callable 伪类型

$this->foof = array($this, 'foo');
...
call_user_func($this->foof);
于 2012-05-31T22:04:37.017 回答