私のサービスで定義されたFunctiongetCurrentOrDefaultLocale()
は、コントローラーまたはコマンド ライン スクリプトから呼び出すことができます。
CLI からサービスにアクセスrequest
すると例外がスローされ、それを使用して CLI 呼び出しを検出しています。ただし、この目的のためだけに例外をキャッチするのは、私にはとても悪いようです。
現在のコンテキスト (実行、ブラウザーと CLI) でリクエストにアクセスできるかどうかを確認する信頼できる方法はありますか?
/**
* @return string
*/
protected function getCurrentOrDefaultLocale()
{
try {
$request = $this->container->get('request');
}
catch(InactiveScopeException $exception) {
return $this->container->getParameter('kernel.default_locale');
}
// With Symfony < 2.1.0 current locale is stored in the session
if(version_compare($this->sfVersion, '2.1.0', '<')) {
return $this->container->get('session')->getLocale();
}
// Symfony >= 2.1.0 current locale from the request
return $request->getLocale();
}