クラスがあると仮定して
class foo{
}
メソッドはありませんが、コードのどこかで、天才開発者がクラスを呼び出し、次のように使用しました。
$x = new foo();
$x->run();
私たちのクラスには「実行」メソッドはありませんが、この foo クラスが何らかのコードが「実行」メソッドを呼び出したことを知ることができるということはありますか?
クラスに、存在しないメソッドが呼び出されたときに呼び出されるという名前の魔法のメソッド__call
を与えることができます。
class foo{
function __call($method, $params) {
echo "Non extisent method $method is called";
}
}
あなたが探しているのは__call()マジックメソッドだと確信しています。次のように定義されています。
__call() は、オブジェクト コンテキストでアクセスできないメソッドを呼び出すときにトリガーされます。
この時点で、呼び出しの動的処理を処理できます。
class Dog
{
function __call($method, $params)
{
echo("Sorry, this dog cant " . $method);
}
}
$bulldog = new Dog();
$bulldog->run();
出力: 申し訳ありませんが、この犬は走れません
set_error_handlerで達成できると思います