Php 如何正确地要求phar文件
phpunit已停止支持PEAR安装。这导致我们需要继续使用phpunit的phar安装。我们有一个包装脚本,它遍历许多目录,并在这些目录上调用phpunit可执行文件。包装脚本然后将所有生成的报告合并为一个报告 当phpunit与PEAR一起安装时,包装脚本顶部唯一需要的是Php 如何正确地要求phar文件,php,phpunit,require,phar,Php,Phpunit,Require,Phar,phpunit已停止支持PEAR安装。这导致我们需要继续使用phpunit的phar安装。我们有一个包装脚本,它遍历许多目录,并在这些目录上调用phpunit可执行文件。包装脚本然后将所有生成的报告合并为一个报告 当phpunit与PEAR一起安装时,包装脚本顶部唯一需要的是 需要'PHP/CodeCoverage/Autoload.PHP' 然后,当包装脚本执行以下操作时 $writer = new PHP_CodeCoverage_Report_Clover(); $writer->p
需要'PHP/CodeCoverage/Autoload.PHP'代码>
然后,当包装脚本执行以下操作时
$writer = new PHP_CodeCoverage_Report_Clover();
$writer->process($codeCoverage, "${reportsDir}/clover-coverage.xml");
自动加载器将(大概)加载执行此代码所需的任何内容,我们将继续我们的快乐之路
然而,自从移动到phar安装之后,事情变得一团糟。起初我认为我可以只需要phar文件本身,一切都会很好
要求“phpunit-3.7.31.phar”代码>
但是,这会导致在命中require行时立即执行phar文件,从而中止包含phpunit用法输出的包装脚本。由于不能在php require语句中使用通配符,因此我慢慢地构建了完成包装脚本所需的文件列表,并要求如下所示:
require'phar://phpunit-3.7.31.phar/php-code-coverage/CodeCoverage/Report/Clover.php';代码>
当我从它的目录执行包装脚本并且phpunit.phar文件在同一个目录中时,这就起作用了。但是,尝试从其他目录执行它将失败,因为在include路径上找不到phar文件。我试图更改include路径,将.phar文件放在include路径上已经存在的位置,并为include中的phar文件提供一个绝对路径,如:
require'phar://actual/path/to/file/phpunit-3.7.31.phar/php-code-coverage/CodeCoverage/Report/Clover.php';代码>
这些试图解决我的问题的尝试都没有奏效
如何包含.phar文件中的文件,以便从系统上的任何位置运行脚本?
另一个可以接受的答案是允许我使用phar文件中的类,而不包括我单独需要的所有内容
Ubuntu 12.04
PHPUnit 3.7.31(我们必须继续使用这个版本,但这并不会真正影响问题)PHPUnit的PHAR只能作为一个库正确使用
还可以查看如何合并多个运行的代码覆盖率数据。为什么不将其解压缩?我正在尝试使用PHPCOV,但它似乎不喜欢phpunit 3.7.31生成的.cov文件。您能否确认phpcov是否将使用phpunit 3.7.31中的.cov文件?否,phpcov不支持phpunit 3.7。您需要PHPUnit 4才能使PHPCOV正常工作。请注意,PHPUnit项目不再积极支持PHPUnit 3.7。