php的phar是什么?


phar

要求5.2以上

前言

最近在看composer,是下載了一個composer.phar,然后放到/usr/local/bin目錄下,就可以全局使用composer了,然而並不懂phar是什么,還以為是個PHP的擴展,要用phpize編譯的,看了這篇文章后才懂韓天峰-php中phar包的使用

創建

php5.3之后支持了類似Java的jar包,名為phar。用來將多個PHP文件打包為一個文件.可以和tar zip相互轉化

官網介紹:

In addition to providing this service, the phar extension also provides a file-format abstraction method for creating and manipulating tar and zip files through the PharData class, much as PDO provides a unified interface for accessing different databases.

就是類似pdo的接口,也可以轉化成zip tar包

首先要改php.ini里的readonly關閉,默認是不能寫phar包的

$phar = new Phar('swoole.phar');//參數是壓縮包的名稱
//指定壓縮的目錄,第2個參數通過正則指定壓縮文件的擴展名
$phar->buildFromDirectory(__DIR__.'/../','/\.php$/');
//使用gzip來壓縮此文件
$phar->compressFiles(Phar::GZ);

$phar->stopBuffering();
//用來設置啟動加載的文件。默認會自動加載並執行lib_config.php文件
$phar->setStub($phar->createDefaultStub('lib_config.php'));

使用

include 'swoole.phar';
include 'swoole.phar/code/page.php';

轉化成zip

$phar = new Phar('myphar.phar');
$pgz = $phar->convertToExecutable(Phar::TAR, Phar::GZ); // makes myphar.phar.tar.gz

疑問:

回到最初的問題,既然是轉成了一個文件,那放在bin目錄下,為什么就可以全局使用了呢?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM