重複の可能性:
PHP __call と method_exists
__call()
クラスのメソッドの代わりに使用しています。このクラスの method_exists() の結果に影響を与える方法はありますか?
重複の可能性:
PHP __call と method_exists
__call()
クラスのメソッドの代わりに使用しています。このクラスの method_exists() の結果に影響を与える方法はありますか?
いいえ、できません。
__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が何を処理するかを知る方法がありません。