簡體   English   中英

如何正確地需要一個phar文件

[英]How to properly require a phar file

phpunit已停止支持PEAR安裝。 這導致我們需要使用phpunit的phar安裝前進。 我們有一個包裝腳本,遍歷許多目錄並在這些目錄上調用phpunit可執行文件。 然后,包裝腳本將所有生成的報告合並到一個報告中。

當phpunit與PEAR一起安裝時,我們在包裝腳本頂部需要的唯一要求是

require 'PHP/CodeCoverage/Autoload.php';

然后,當包裝腳本做了類似的事情

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

自動加載器(可能)會加載執行此代碼所需的任何內容,我們將以愉快的方式繼續運行。

然而,自從轉移到phar安裝之后,事情變得一團糟。 最初我以為我可以只需要phar文件,一切都會好的。

require 'phpunit-3.7.31.phar';

但是,這會導致在命中行被命中時立即執行phar文件,並使用phpunit用法輸出中止包裝腳本。 由於您無法在php require語句中使用通配符,因此我慢慢構建了完成包裝腳本所需的文件列表,並且需要它們如下所示:

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

當我從它的目錄執行包裝腳本並且phpunit.phar文件在同一目錄中時,這個工作。 但是,嘗試從其他目錄執行它將無法說明在包含路徑上找不到phar文件。 我試圖更改包含路徑,將.phar文件放在已包含路徑上的位置,並在包含中指定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只能在PHPUnit 4.2中正確用作庫。

另請參閱PHPCOV以合並多次運行的代碼覆蓋率數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM