2012-05-31 43 views
1

這裏是一個例子類:可以我們別名(保存到變量中)一類的方法在PHP

public class example 
{ 
    private $foof;   

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

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

因此,基本上,在示例代碼的建築工,是有可能的一類方法分配給一個變量?

最後我想要的是有一個關聯數組,在它的別名所有類方法......這可能在PHP? (!你應該使用反正)

回答

5

在PHP5.3 +你可以簡單地創建一個匿名函數,它們調用你的方法:

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

但是,您可以使用$this->foof()不能稱之爲 - 你必須分配它給一個變量第一:$foof = $this->foof; $foof();


在老版本PHP,你不能輕易做到這一點 - create_function()不創建封閉所以$this但是不適用。

+0

介紹一些關於第一句,請... – dave

+2

@戴夫http://php.net/call_user_func例如4 – Corbin

+0

我們可以通過參數類方法它被分配給一個變量,而不是之後在匿名函數中? – dave

0

你並不需要使用匿名函數。只需使用Callable pseudo type即可。

$this->foof = array($this, 'foo'); 
... 
call_user_func($this->foof); 
+0

不是問題的關鍵。關鍵是能夠將變量的類方法別名...所以每次我調用變量時,它實際上都會引用該類的方法... – dave

+0

答案是正確的。也許這不是你想要的,或者不是你理想的答案,但它肯定是你要求的(這是模糊的)。如果將它保存到$ f,然後在編輯它之後通過'$ f(55);' – goat

+0

ya調用它是有意義的,它的工作原理是一樣的。在編輯之前,它沒有回答這個問題。 – dave

相關問題