2017-03-05 229 views
0

在我们的应用程序中使用PHP来检查一个包(任何版本)是否安装/存在,最简洁的方法是什么?作曲家/ PHP:如何检查作曲家包是否安装?

基本上,我们的应用程序中,我们要调用一个函数具有以下签名:

bool function hasComposerPackage(string $packageName)

将这个功能有什么遏制,使我们可以这样做:

if (hasComposerPackage('phpunit/phpunit')) { 
    echo 'PHPUnit is installed!'; 
} 

理想情况下,这需要在没有任何命令行exec调用的情况下发生,并且它不应该自动加载过程中的任何不必要的文件。

+0

http://stackoverflow.com/a/15186162/897075 ?? 抱歉命令行位在第二次读取之前没有注册 - 请问为什么? –

+0

@ Alex.Barylski由于与此问题无关的各种原因,这需要在应用程序内部发生,而不依赖命令行。 – mae

+0

对不起,我的坏 - 这里很晚 - 快速阅读并且回复同样快 –

回答

0

@使用shell_exec()composer show运行的东西user1132363是肯定知道的唯一途径,但你似乎拒绝想走这条路线。我不知道你为什么拒绝,这是解决你的问题。没有其他可靠的手段。使用class_exists也是不可靠的,因为类名可以在包中更改。

这就是说,我认为在这里有一个更大的问题,你不问:你什么问题实际上试图解决?如在,为什么你需要检查,看是否安装了一个包?