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目錄下,為什么就可以全局使用了呢?