dongmiyi8220 2019-06-28 08:37
浏览 69

类:在任何其他函数之前自动调用“before - function”

I'm trying to make some kind of error-handler in one of my classes. Therefore my class has a $error variable. If it is true, it should print a message.

This procedure shoud happen everytime before a function of this class is called

I have tried the approach of the magic method __call(), mentioned in this answer: SO Answer

Unfortunately it doesn't work.

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);
       }
   }
}

When I call:

$a = new XXX($var);
$a->test();

The output is still:

/*
* Output:
* test
*/

Any Ideas would be very appreciated.

Thanks

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 php 同步电商平台多个店铺增量订单和订单状态
    • ¥15 关于logstash转发日志时发生的部分内容丢失问题
    • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
    • ¥15 微信会员卡接入微信支付商户号收款
    • ¥15 如何获取烟草零售终端数据
    • ¥15 数学建模招标中位数问题
    • ¥15 phython路径名过长报错 不知道什么问题
    • ¥15 深度学习中模型转换该怎么实现
    • ¥15 Stata外部命令安装问题求帮助!
    • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。