类:在任何其他功能之前自动调用“功能前”

时间:2019-06-28 08:37:50

标签: php class php-5.6

我正在尝试在我的一个课程中进行某种错误处理。 因此,我的班级有一个$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
*/

任何想法将不胜感激。

谢谢

0 个答案:

没有答案