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

Ron*_*ero -1 php oop

假设我们有一个班级

class foo{

}
Run Code Online (Sandbox Code Playgroud)

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

$x = new foo();
$x->run();
Run Code Online (Sandbox Code Playgroud)

我们的类中没有"run"方法,但无论如何,这个foo类可以知道一些代码称为"run"的方法吗?

Gol*_*rol 7

您可以为类提供一个名为__call魔法方法,在调用不存在的方法时调用该方法:

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

}
Run Code Online (Sandbox Code Playgroud)

  • @Ronan:您可能想要尝试与您刚输入的内容完全相同的内容.:)那,或者`call_user_func_array(array($ this-> engine,$ method),$ params);`如果你想让params单独通过. (2认同)