我正在尝试编写一些代码来跟踪依赖项.有没有办法以编程方式检测是否已安装PEAR包?我想的是:
if ($some_pear_api->isPackageInstalled('FooPack')) {
echo 'FooPack is installed!';
} else {
echo 'FooPack is not installed. :(';
}
我知道您可以简单地检测该包的类文件是否存在,但我主要想知道PEAR是否已安装,因为有时一些库提供了包含其代码的其他方法(例如PHPUnit有一个梨通道以及一个git repo ).
谢谢您的帮助!
解决方法:
您需要使用PEAR_Registry类来执行此操作(这是PEAR脚本本身使用的).
从3年前开始阅读Adam Harvey的博客文章“pear -> list” – 您需要的所有细节/示例都在那里.
include 'PEAR/Registry.php';
$reg = new PEAR_Registry;
foreach ($reg->listPackages() as $package) {
print "$package\n";
}
如果您需要这个来检查每个包的特定版本,那么您可以基于以下示例,我在该博客条目的注释中提供了以下示例:
require 'PEAR/Registry.php';
$reg = new PEAR_Registry;
define("NAME", 0);
define("VERSION", 1);
$packages = array(
array("PEAR", "1.6.2"),
array("Date", "1.4.7"),
array("Date_Holidays", "0.17.1"),
array("Validate_IE", "0.3.1")
);
foreach ($packages as $package) {
$pkg = $reg->getPackage($package[NAME]);
$version = $pkg->getVersion();
echo "{$package[NAME]} – {$package[VERSION]} – ";
echo version_compare($version, $package[VERSION], '>=') ? 'OK': 'BAD', "\n";
}
?>
标签:php,pear
来源: https://codeday.me/bug/20190526/1157330.html