-1

假设我们有一堂课

class foo{

}

它没有方法,但在代码的某个地方,一些天才开发人员调用了该类并像这样使用它:

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

我们的类中没有“run”方法,但是这个 foo 类是否可以知道某些代码称为“run”方法?

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 回答