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 に答える