如果紅寶石被邀請去參加一個聚會,並帶來:PHP等價於send和getattr?
foobarobject.send('foomethod')
..和Python被邀請到同一政黨,並帶來:
getattr(foobarobject, 'foomethod')()
..什麼呢PHP必須把黨?
紅利問題:如果Ruby和Python嫉妒PHP的party-favours,他們會在PHP的文檔中搜索哪些英文術語以便在PHP背後討論它?
如果紅寶石被邀請去參加一個聚會,並帶來:PHP等價於send和getattr?
foobarobject.send('foomethod')
..和Python被邀請到同一政黨,並帶來:
getattr(foobarobject, 'foomethod')()
..什麼呢PHP必須把黨?
紅利問題:如果Ruby和Python嫉妒PHP的party-favours,他們會在PHP的文檔中搜索哪些英文術語以便在PHP背後討論它?
PHP帶來了這一點:
$foobarobject->{"foomethod"}();
...和焦炭和芯片。
編輯:
雖然上述期限variable variables
沒有什麼特別談論它做手冊中的對象。但是,就可以實現同樣的事情call_user_func
:
call_user_func(array($foobarobject, "foomethod"));
使用變量來保存方法名。與Paolo的第一個例子幾乎一樣,但除非您知道它,否則可能不那麼明顯。
$method = "foomethod";
$foobarobject->$method();
您還獲得了Reflection classes。
$method = new ReflectionMethod('Foobar', 'foomethod');
$method->invoke(null);
兩者不同:Ruby版本調用方法; Python版本返回一個綁定方法。 – Miles 2009-04-21 04:52:04
+1爲創造性的方式來短語問題:) – 2009-04-21 04:56:38