【发布时间】:2011-06-07 16:39:20
【问题描述】:
如果我调用$object->showSomething() 并且showSomething 方法不存在,我会收到一个致命错误。没关系。
但我有一个带有参数的show() 方法。我可以告诉 PHP 在遇到$object->showSomething() 时调用show('Something'); 吗?
【问题讨论】:
-
解决方法是通过
__call捕获此类函数调用并重定向到替代函数。如果show*是您唯一的特殊情况,那也没关系;如果您需要在 camelCase 上拆分其他方法/参数,那么这就不那么出色了(会违反语言语义,因为 PHP 标识符实际上不区分大小写)。 -
我明白了。 __call() 仅在找不到方法时运行?
-
是的,它可以作为后备。真正的方法有优先权。如果没有找到任何东西,
__call将处理它。