2011-12-24 18 views
0

を使用して、メソッドを呼び出すと、私はプロパティ私が働いているプロジェクトのプロパティ

$this->action = "home"; 
$action = $this->action; 
$this->$action(); 

を使用してメソッドを呼び出すしようとしているが、これを行うために短い方法はありますか?私は、次のことを試してみましたが、それは動作しません。

$this->action = "home"; 
$this->$this->action(); 

だから私は$アクションプロパティを設定し、$アクションと同じ名前を持つメソッドを呼び出したいです。

答えて

3

これは何をしたい、おそらくです:

$this->action = "home"; 
$this->{$this->action}(); 

これは、メソッドとプロパティで動作しますが。 $objref->{ [expression] }はの場合[expression]helloと評価された場合、$objref->helloと同じです。

+0

のようになります。彼の質問とあなたの応答を読み返して、私は彼が何をしたのか理解します。ここで良い解決策。 – Drahkar

0

call_user_funcの機能を調べます。

テストされていないが、それはこのようなものに見えることがあります。

call_user_func($this->action); 
+0

call_user_func(array($ this、$ this-> action));確かに –

+0

これもうまくいくかもしれません。インスタンスメソッドを呼び出す場合は、オブジェクトインスタンスも配列に渡す必要があります([callbacks](http://www.php.net/manual/en/language.pseudo-types.php#language.typesを参照)。 .callback)を参照してください)。それは 'call_user_func(array($ this、$ this-> action));' – vstm

関連する問題