例如,我想向Request类添加其他方法,例如getRequiered*($name)
在请求中缺少参数的情况下,此类方法将引发异常。我想这样实现:
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);
});
是possilbe吗?
是的,这是可能的(从来没有真正做到这一点,以下只是阅读代码的提示)。
您需要创建的子类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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句