在示例中,我想向Request类添加其他方法,例如getRequiered*($name)
,如果在请求中遗漏了param,它将抛出异常。我想像这样实现它:
class MySmartRequest extends Request {
// ...
function getIntRequired($name) {
$res = $this->get($name, null);
if (null === $res) { throw new Exception('Missed required param'); }
return (int) $res;
}
}
// ...
$app->before(function(Request $r) {
return new MySmartRequest($r);
});
可能吗?
答案 0 :(得分:1)
是的,这是可能的(从未实际执行此操作,以下只是阅读代码的提示)。
您需要创建Silex\Application
的子类,并将run()
函数覆盖为以下内容:
public function run(Request $request = null)
{
if (null === $request) {
$request = MySmartRequest::createFromGlobals();
}
$response = $this->handle($request);
$response->send();
$this->terminate($request, $response);
}
为避免重复,您可以尝试:
public function run(Request $request = null)
{
if (null === $request) {
$request = MySmartRequest::createFromGlobals();
}
parent::run($request);
}