6

如果 Ruby 受邀参加派对并带来:

foobarobject.send('foomethod') 

.. 和 Python 被邀请参加同一个聚会并带来:

getattr(foobarobject, 'foomethod')()

.. PHP 必须为聚会带来什么?

额外的问题:如果 Ruby 和 Python 嫉妒 PHP 的派对青睐,他们会在 PHP 的文档中搜索哪些英文术语以便在 PHP 背后谈论它?

4

2 回答 2

12

PHP带来了这个:

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

……还有可乐和薯条。

编辑

尽管上面的术语是variable variables在手册中没有专门谈论对对象执行此操作。但是,您可以通过以下方式实现相同的目的call_user_func

call_user_func(array($foobarobject, "foomethod"));
于 2009-04-21T04:30:55.953 回答
3

使用变量来保存方法名称。与 Paolo 的第一个示例几乎相同,但除非您知道,否则可能不那么明显。

$method = "foomethod";
$foobarobject->$method();

您还获得了反射类

$method = new ReflectionMethod('Foobar', 'foomethod');
$method->invoke(null);
于 2009-04-21T05:57:02.767 回答