可能重复:
PHP调用与方法存在
我在类中使用__call()
而不是方法。有什么方法可以影响这个类中method_exists()的结果吗?
不,你不能。
__调用只是类上函数调用的"占位符"。
考虑一下:
Class MyClass
{
private function Bar()
{
return 'Bar';
}
public function __call($name, $arguments)
{
return $this->Bar();
}
}
$myClass = new MyClass();
echo $myClass->Foo( 'Foo' );
此代码将输出"条形图"方法"Foo"不存在,通过调用$MyClass->Foo("Foo’")__call启动。
显然,method_exists无法知道__call将处理什么。