0

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);
});

可能ですか?

4

1 に答える 1

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); 
}
于 2014-04-04T12:17:03.523 に答える