错误处理

CabalPHP 支持自定义异常处理和 404,405等错误处理。

404处理

支持自定义404处理,如果不配置会返回缺省404页面。

  1. use Cabal\Core\Http\Response;
  2. use Cabal\Core\Http\Server;
  3. use Cabal\Core\Http\Request;
  4. $boot->getDispatcher()->registerMissingHandler(function (Server $server, Request $request, $vars) {
  5. // code...
  6. });

404处理

支持自定义405处理,如果不配置会返回缺省405页面。

  1. use Cabal\Core\Http\Response;
  2. use Cabal\Core\Http\Server;
  3. use Cabal\Core\Http\Request;
  4. $boot->getDispatcher()->registerMethodNotAllowHandler(function (Server $server, Request $request, $vars) {
  5. // code...
  6. });

异常处理

支持自定义控制器中的异常处理,如果不配置会返回缺省500页面。

  1. use Cabal\Core\Http\Response;
  2. use Cabal\Core\Http\Server;
  3. use Cabal\Core\Http\Request;
  4. $boot->getDispatcher()->registerExceptionHandler(function (Server $server, \Exception $ex, $chain, Request $request, $vars) {
  5. $response = new Response('php://memory', 500);
  6. $body = '';
  7. if ($server->debug()) {
  8. $body = '<pre>' . $ex->__toString() . '</pre>';
  9. }
  10. $response->getBody()->write('<html><head><title>500 Internal Server Error</title></head><body bgcolor="white"><h1>500 Internal Server Error</h1>' . $body . '</body></html>');
  11. return $response;
  12. });