如果 Ruby 受邀参加派对并带来:
foobarobject.send('foomethod')
.. 和 Python 被邀请参加同一个聚会并带来:
getattr(foobarobject, 'foomethod')()
.. PHP 必须为聚会带来什么?
额外的问题:如果 Ruby 和 Python 嫉妒 PHP 的派对青睐,他们会在 PHP 的文档中搜索哪些英文术语以便在 PHP 背后谈论它?
如果 Ruby 受邀参加派对并带来:
foobarobject.send('foomethod')
.. 和 Python 被邀请参加同一个聚会并带来:
getattr(foobarobject, 'foomethod')()
.. PHP 必须为聚会带来什么?
额外的问题:如果 Ruby 和 Python 嫉妒 PHP 的派对青睐,他们会在 PHP 的文档中搜索哪些英文术语以便在 PHP 背后谈论它?
PHP带来了这个:
$foobarobject->{"foomethod"}();
……还有可乐和薯条。
编辑:
尽管上面的术语是variable variables
在手册中没有专门谈论对对象执行此操作。但是,您可以通过以下方式实现相同的目的call_user_func
:
call_user_func(array($foobarobject, "foomethod"));
使用变量来保存方法名称。与 Paolo 的第一个示例几乎相同,但除非您知道,否则可能不那么明显。
$method = "foomethod";
$foobarobject->$method();
您还获得了反射类。
$method = new ReflectionMethod('Foobar', 'foomethod');
$method->invoke(null);