PHP相当于send和getattr?

时间:2009-04-21 04:29:23

标签: php oop reflection equivalent

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

foobarobject.send('foomethod') 

..并且Python被邀请到同一个派对并带来:

getattr(foobarobject, 'foomethod')()

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

奖金问题:如果Ruby和Python嫉妒PHP的派对恩惠,他们会在PHP的文档中搜索哪些英语术语,以便在PHP背后讨论它?

2 个答案:

答案 0 :(得分:11)

PHP带来了这个:

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

......和可乐和薯条。

修改

虽然上面的术语是variable variables,但没有具体谈到对手册中的对象进行操作。但是,您可以使用call_user_func实现相同的目的:

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

答案 1 :(得分:3)

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

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

您还获得了Reflection classes

$method = new ReflectionMethod('Foobar', 'foomethod');
$method->invoke(null);