我正在尝试在我的一个课程中进行某种错误处理。
因此,我的班级有一个$error
变量。如果为真,则应打印一条消息。
该过程应在每次调用此类的函数之前发生
我已经尝试过此答案中提到的魔术方法__call()的方法:SO Answer
不幸的是,它不起作用。
class XXX extends YYY{
public $error;
public $var;
function __construct($var)
{
$this->var = $var;
$this->error = true; //test the error process
}
private function before(){
if($this->error)
{
echo "something went wrong"; die;
}
}
private function test(){
echo "test", PHP_EOL;
}
public function __call($method,$arguments) {
if(method_exists($this, $method)) {
$this->before();
return call_user_func_array(array($this,$method),$arguments);
}
}
}
当我打电话时:
$a = new XXX($var);
$a->test();
输出仍然是:
/*
* Output:
* test
*/
任何想法将不胜感激。
谢谢