2012-12-21 56 views
1

我需要从Symfony 2.0.x(使用Session)和Symfony 2.1.x(使用Request)的服务中获取当前语言环境。获得Symfony 2版本的服务?

我会做sometthing,如:

if(version_compare(Symfony::VERSION, '2.1.0') < 0) { 
    $obj = $this->get('session'); 
} 
else { 
    $obj = $this->get('request'); 
} 

$locale = $obj->getLocale(); 

但没有Symfony::VERSION不变。任何想法?除了使用is_callable或一些奇怪的事情......

回答

2
use Symfony\Component\HttpKernel\Kernel; 
echo Kernel::VERSION . "\n"; 

不知道这是推荐的方式或没有,但它的工作原理。内核类实际上是在bootstrap.cache类中定义的,所以每当更新Symfony源代码时都会更新VERSION。

还自曝:

const VERSION   = '2.1.4-DEV'; 
const VERSION_ID  = '20100'; 
const MAJOR_VERSION = '2'; 
const MINOR_VERSION = '1'; 
const RELEASE_VERSION = '4'; 
const EXTRA_VERSION = 'DEV'; 
+0

谢谢!哪一个将与version_compare兼容? – gremo

+0

VERSION将会兼容,但在您的情况下您只需检查MINOR_VERSION。 – Cerad

+0

似乎应该有一个容易注入到服务的版本,但我还没有找到它。 – Cerad