PHP中的变量方法


Variable methods in PHP

我正在查看codebird-php git,并注意到作者有一种方法可以检测未在类本身中声明的方法。例如,他有

cb -> statuses_homeTimeline ();

成功执行,尽管在Codebird类中没有称为statuses_homeTimeline()的方法。

我试着寻找关于这种类型的结构的信息,但不知道它叫什么,我没有找到任何东西。

它通常被称为什么(我已经谷歌了"变量方法","映射方法"等的所有变体)?有反对使用它的理由吗?它(原则上)是如何工作的?

我发现了一堆关于__call和你可以用它做的事情的问题,但没有关于__call实际上是什么

PHP对象有许多魔术方法。最著名的是__construct

__call是一个神奇的方法,当你试图调用一个不存在的方法时,它会被调用。这是一种方法的"包罗万象"。

技术术语是"方法重载"。

$cb->statuses_homeTimeline()被调用时,如果该方法不存在,它将调用
$cb->__call("statuses_homeTimeline",array())

__call()魔术方法。__call()在对象上下文中调用不可访问的方法时触发。