Ошибка обработки в безжировой среде

просто глупый вопрос, как использовать обработку ошибок в рамках f3?

$this->f3->set('ONERROR', function($f3) {
      echo $this->f3->get('ERROR.text');
});

if (a > b) {
  //throw error  
  i want to call error and pass "a is too big!"
}

person andymo    schedule 09.03.2017    source источник
comment
это работает, но я ожидал страницу с ошибкой в ​​формате html, как обычно это делает без жира. github.com/bcosca/fatfree/blob/master/lib/ base.php#L1222   -  person andymo    schedule 10.03.2017
comment
Если это работает, то почему бы просто не использовать это? Другими словами, зачем вам нужен собственный обработчик ошибок, если тот, который определен в FFF, форматирует сообщение?   -  person george007    schedule 10.03.2017
comment
это потому, что формат, определенный в f3, работает только иногда, не всегда, это ошибка?   -  person andymo    schedule 10.03.2017
comment
Формат может быть другим, если запрос исходит от AJAX или cli. AJAX используется, когда в запросе есть заголовок X-Requested-With   -  person george007    schedule 11.03.2017
comment
@ george007 сейчас я не использую ajax, но это кажется случайным   -  person andymo    schedule 15.03.2017
comment
Случайный для одного и того же запроса или случайный для разных запросов (но одинаковый для каждого запроса)?   -  person george007    schedule 16.03.2017


Ответы (3)


Просто вызовите метод error фреймворка с соответствующим Код состояния HTTP:

$f3->error(400,'a is too big');
person xfra35    schedule 17.03.2017

Вы можете сделать что-то вроде throw new Exception("a is too big!")

Вот пример, который идеально подходит для вашего случая:

https://www.w3schools.com/php/php_exception.asp

person Scratch'N'Purr    schedule 09.03.2017

Попробуйте следующее

if ($a > $b) {
  trigger_error("a is too big!", E_USER_NOTICE);
}
person shukshin.ivan    schedule 09.03.2017
comment
Почему? Вам, вероятно, следует повысить уровень до E_USER_ERROR. - person shukshin.ivan; 10.03.2017