PHP类知道在该类中调用了什么方法

时间:2012-08-31 18:55:52

标签: php oop

假设我们有一个班级

class foo{

}

它没有方法 但是在代码中的某个地方,一些天才开发人员称这个类并使用它,如下所示:

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

我们的类中没有“run”方法,但无论如何,这个foo类可以知道某些代码叫做“run”吗?

3 个答案:

答案 0 :(得分:7)

您可以为调用不存在的方法时调用的类magic method named __call提供:

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

}

答案 1 :(得分:1)

我很确定你要找的是__call()魔法。它被定义为:

在对象上下文中调用不可访问的方法时会触发

__ call()。

此时您可以处理呼叫的动态处理。

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

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

输出: 对不起,这条狗不能运行

答案 2 :(得分:1)

我可以用set_error_handler来实现