-1

クラスがあると仮定して

class foo{

}

メソッドはありませんが、コードのどこかで、天才開発者がクラスを呼び出し、次のように使用しました。

$x = new foo();
$x->run();

私たちのクラスには「実行」メソッドはありませんが、この foo クラスが何らかのコードが「実行」メソッドを呼び出したことを知ることができるということはありますか?

4

3 に答える 3

7

クラスに、存在しないメソッドが呼び出されたときに呼び出されるという名前の魔法のメソッド__callを与えることができます。

class foo{
  function __call($method, $params) {
    echo "Non extisent method $method is called";
  }

}
于 2012-08-31T18:59:12.667 に答える
1

あなたが探しているのは__call()マジックメソッドだと確信しています。次のように定義されています。

__call() は、オブジェクト コンテキストでアクセスできないメソッドを呼び出すときにトリガーされます。

この時点で、呼び出しの動的処理を処理できます。

class Dog
{
    function __call($method, $params)
    {
        echo("Sorry, this dog cant " . $method);
    }
}

$bulldog = new Dog();
$bulldog->run();

出力: 申し訳ありませんが、この犬は走れません

于 2012-08-31T18:59:50.030 に答える
1

set_error_handlerで達成できると思います

于 2012-08-31T19:00:34.040 に答える