2017-05-08 104 views
0

我们有经由作曲安装到Symfony的多个供应商束(外部和内部编写的)。因此,从一composer.json一个例子是:如何在Symfony中获得由Composer安装的软件包的版本?

"repoName/ThisBundle" : "dev-release/1.1.2" 

所以在Symfony的控制器,我怎么能要求的“ThisBundle”或“repoName/ThisBundle”的版本,返回“DEV-发布/ 1.1 .2" ?

一个捆的服务模板,我们所有的应用程序,并在我想要显示的模板版本的应用程序之一正在使用。

+2

你可以只解析锁文件 – Federkun

+0

没错,这就是我想这样做的,但是这是一个很大的努力来获得一个版本号。看作Symfony是一项框架工作,通过框架工作来访问这些细节将会很好。 – MicWit

回答

1

你只需要输入

composer.phar show 

将显示所有已安装的软件包及其版本的信息。 要了解更多详细信息,指定包的名称,以及:

composer.phar show bundle/bundlename 

,将显示很多东西,包括提交MD5哈希值,源URL,许可证类型等

+0

也许你可以用如何从控制器内部操作的示例更新你的答案? – Cerad

+0

叶,这似乎是通过命令行这样做,不是在一个控制器(经由PHP)的方式。 – MicWit

+0

$这 - >容器 - >的getParameter( 'kernel.bundles'); –

0

如果容器对象可用的(并且是这样的情况,如果你在一个控制器是),那么你可以通过

$this->container->getParameter('kernel.bundles'); 

得到启用束阵列,但要记住,刚启用的束在appkernal.php 好运

+1

这很棒,因为您可以了解是否安装了捆绑软件,但是,即使安装了捆绑软件,您仍然无法获得特定安装捆绑软件的版本。如果这个数组是一个多维数组,而不是仅仅拥有它所安装版本的路径,那么这个数组会很棒。 – MicWit

+0

@MicWit我可以看到一种方式(对此不好),您可以更改.htaac​​ces文件,以便允许访问composer.json文件,然后使用json_decode函数将其转换为数组,然后完成。 ,但它仍然是一个糟糕的做事方式,因为web目录应该是唯一可以在公共场合使用的地方,祝你好运 –

+0

Yeh,不会那样做,因为我们会被安全团队击中!看起来没有办法做到这一点,可以添加一个功能请求到Symfony。 – MicWit

相关问题