PHP equivalent of send and getattr?

天大地大妈咪最大 提交于 2019-11-28 04:00:02

问题


If Ruby gets invited to a party and brings:

foobarobject.send('foomethod') 

.. and Python gets invited to the same party and brings:

getattr(foobarobject, 'foomethod')()

.. what does PHP have to bring to the party?

Bonus question: If Ruby and Python got jealous of PHP's party-favors, what English terms would they search for in PHP's documentation in order to talk about it behind PHP's back?


回答1:


PHP brings this:

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

... and the coke and chips.

EDIT:

Although the term for the above is variable variables there is nothing specifically talking about doing it to an object in the manual. However, you can achieve the same thing with call_user_func:

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



回答2:


Using variable to hold the method name. Pretty much the same as Paolo's first example, but maybe not so obvious unless you know about it.

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

You also got the Reflection classes.

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


来源:https://stackoverflow.com/questions/771036/php-equivalent-of-send-and-getattr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!