-1

重複の可能性:
PHP __call と method_exists

__call()クラスのメソッドの代わりに使用しています。このクラスの method_exists() の結果に影響を与える方法はありますか?

4

1 に答える 1

0

いいえ、できません。

__callは、クラスの関数呼び出しの単なる「プレースホルダー」です。

このことを考慮:

Class MyClass
{
  private function Bar()
  {
     return 'Bar';
  }

  public function __call($name, $arguments)
  {
    return $this->Bar();
  }
}

$myClass = new MyClass();
echo $myClass->Foo( 'Foo' );

このコードは「Bar」を出力します。メソッド「Foo」は存在せず、$ MyClass-> Foo('Foo')を呼び出すことで__callが開始されます。

明らかに、method_existsには__callが何を処理するかを知る方法がありません。

于 2012-09-11T13:37:01.177 に答える