gpt4 book ai didi

php - 如何正确地要求 phar 文件

转载 作者:可可西里 更新时间:2023-11-01 00:08:50 27 4
gpt4 key购买 nike

phpunit 已经停止支持 PEAR 安装。这导致我们需要继续使用 phpunit 的 phar 安装。我们有一个包装脚本,它遍历许多目录并在这些目录上调用 phpunit 可执行文件。然后,包装脚本将所有生成的报告整合到一个报告中。

当 phpunit 与 PEAR 一起安装时,我们在包装脚本顶部唯一需要的是

需要'PHP/CodeCoverage/Autoload.php';

然后,当包装脚本执行类似

的操作时
$writer = new PHP_CodeCoverage_Report_Clover();
$writer->process($codeCoverage, "${reportsDir}/clover-coverage.xml");

自动加载器(大概)会加载执行此代码所需的任何内容,我们将继续我们的快乐之路。

然而,自从转向 phar 安装后,事情变得一团糟。最初我以为我可以只需要 phar 文件本身,一切都会很好。

需要'phpunit-3.7.31.phar';

然而,这会导致 phar 文件在 require 行被命中时立即执行,从而中止带有 phpunit 使用输出的包装脚本。因为你不能在 php require 语句中使用通配符,所以我慢慢地构建了一个完成包装脚本所需的文件列表,并像这样要求它们:

需要'phar://phpunit-3.7.31.phar/php-code-coverage/CodeCoverage/Report/Clover.php';

当我从它的目录执行包装脚本并且 phpunit.phar 文件在同一目录中时,这起作用了。但是,尝试从不同的目录执行它会失败,说在包含路径中找不到 phar 文件。我试图更改包含路径,将 .phar 文件放在包含路径中已有的位置,并在包含中给出 phar 文件的绝对路径,如:

需要'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 4.2 起,PHPUnit 的 PHAR 只能作为库正确使用.

另请查看 PHPCOV用于合并来自多次运行的代码覆盖率数据。

关于php - 如何正确地要求 phar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28245630/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com