2009-04-21 7 views
5

Rubyがパーティーに招待されます入った場合:PHPはsendとgetattrに相当しますか?

foobarobject.send('foomethod') 

...とPythonは同じパーティーに招待し、もたらします:

getattr(foobarobject, 'foomethod')() 

... PHPは、パーティーに持って来るために何を持っていません?

ボーナス質問: RubyとPythonがPHPのパーティー好きに嫉妬した場合、PHPのドキュメントの中で英語の用語を検索してPHPの背後にあることを話していますか?

$foobarobject->{"foomethod"}(); 

を...とコークスとチップ:

+0

Rubyバージョンではメソッドが呼び出されます。 Pythonのバージョンはバインドされたメソッドを返します。 – Miles

+5

質問をフレーズする創造的な方法のために+1 –

+0

@Miles:質問は、pythonバージョンにparenを追加することによって変更されました。 – dreftymac

答えて

10

PHPはこれをもたらします。

EDIT

上記のための用語は、特に手動でオブジェクトにそれをやっての話は何もありませんvariable variablesですが。ただし、call_user_funcで同じことを達成することができます。

call_user_func(array($foobarobject, "foomethod")); 
+4

PHPは酷いです.... –

3

メソッド名を保持する変数を使用します。パオロの最初の例とほとんど同じですが、あなたが知っていなければそれほど明白でないかもしれません。

Reflection classesもあります。

$method = new ReflectionMethod('Foobar', 'foomethod'); 
$method->invoke(null); 
関連する問題