Exemplo n.º 1
0
 /**
  * Execute filter
  *
  * @param $filtername
  *
  * @return bool
  */
 public function execute($filtername)
 {
     if (!isset($this->impFilters[$filtername])) {
         //Logger::debug('miss filter %s',$filtername);
         return true;
     }
     $this->app->timer->begin('f_' . $filtername);
     $filters = $this->impFilters[$filtername];
     foreach ($filters as $filter) {
         if ($filter->execute($this->app) === false) {
             Logger::debug('call filter %s.%s=false', $filtername, get_class($filter));
             $this->app->timer->end('f_' . $filtername);
             return false;
         }
         //Logger::debug('call filter %s.%s=true',$filtername, get_class($filter));
     }
     $this->app->timer->end('f_' . $filtername);
     return true;
 }
Exemplo n.º 2
0
 /**
  * Get the result of output
  *
  * @return array
  */
 private function getResult() : array
 {
     if ($this->exception) {
         $errcode = $this->exception->getMessage();
         if ($pos = strpos($errcode, ' ')) {
             $errcode = substr($errcode, 0, $pos);
         }
         if (!preg_match('/^[a-zA-Z0-9\\.\\-_]{1,50}$/', $errcode)) {
             //普通的错误信息不能传到前端
             $errcode = self::STATUS_FATAL;
         }
         $result = array('err' => $errcode);
         if ($errcode == self::STATUS_INPUT) {
             //输入check错误时,可以带些数据
             $result['data'] = $this->outputs;
             Logger::debug('input data error:%s', print_r($result['data'], true));
         }
     } elseif ($this->error) {
         $result = array('err' => self::STATUS_FATAL);
     } else {
         $result = array('err' => self::STATUS_OK, 'data' => $this->outputs);
     }
     foreach ($this->results as $key => $value) {
         if (!isset($result[$key])) {
             $result[$key] = $value;
         }
     }
     return $result;
 }
Exemplo n.º 3
0
 /**
  * 错误处理函数
  *
  * @return boolean 如果返回false,标准错误处理处理程序将会继续调用
  */
 public function errorHandler()
 {
     $error = func_get_args();
     restore_error_handler();
     if (!($error[0] & error_reporting())) {
         Logger::debug('caught info, errno:%d,errmsg:%s,file:%s,line:%d', $error[0], $error[1], $error[2], $error[3]);
         set_error_handler(array($this, 'errorHandler'));
         return false;
     }
     if (isset($this->errorTypeMap[$error[0]])) {
         $logLevel = $this->errorTypeMap[$error[0]];
         call_user_func('Logger::' . $logLevel, 'caught ' . $logLevel . ', errno:%d,errmsg:%s,file:%s,line:%d', $error[0], $error[1], $error[2], $error[3]);
         set_error_handler([$this, 'errorHandler']);
         return false;
     }
     $errmsg = sprintf('caught error, errno:%d,errmsg:%s,file:%s,line:%d', $error[0], $error[1], $error[2], $error[3]);
     Logger::fatal($errmsg);
     $this->endStatus = self::ENDSTATUS_ERROR;
     return true;
 }