影响方法_exists()


Influence method_exists()

可能重复:
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将处理什么。