是否有一个特殊的方法,当我调用任何类的方法时,它都会被调用?
下面有一个示例可以解释我的问题:
class Foo{
public function bar(){
echo 'foo::bar';
}
public function before(){
echo 'before any methods';
}
public function after(){
echo 'after any methods';
}
}
$foo = new Foo;
$foo->bar();
输出应该是:
/*
Output:
before any methods
foo::bar
after any methods
*/
最佳答案
我个人不喜欢这个解决方案,但你可以使用神奇的方法__call:
/**
* @method bar
*/
class Foo{
public function __call($name, $arguments)
{
$myfunc = '_'.$name;
$this->before();
if (method_exists($this,$myfunc)) {
$this->$myfunc();
}
$this->after();
}
public function _bar(){
echo 'foo::bar';
}
public function before(){
echo 'before any methods';
}
public function after(){
echo 'after any methods';
}
}
$foo = new Foo;
$foo->bar();
关于php - 在 PHP 中我的类的任何方法之前调用特殊方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23447430/