return self::response500($req, new IPF_Exception('function '.$func.'() must return IPF_HTTP_Response instance'));
}
return $r;
- } catch (IPF_HTTP_Error404 $e) {
- return new IPF_HTTP_Response_NotFound($req);
+ } catch (IPF_Router_Shortcut $e) {
+ return $e->response($req);
} catch (IPF_Exception $e) {
return self::response500($req, $e);
}
}
}
+abstract class IPF_Router_Shortcut extends Exception
+{
+ public abstract function response($request);
+}
+
+class IPF_HTTP_Error404 extends IPF_Router_Shortcut
+{
+ public function response($request)
+ {
+ return new IPF_HTTP_Response_NotFound($request);
+ }
+}
+