PHAR (文件格式)

維基百科,自由的百科全書
PHP 歸檔
副檔名
.phar
開發者PHP, Davey Shafik, Greg Beaver, Marcus Börger
格式類型文件歸檔英語File archive, 數據壓縮
延伸自ZIP, tar

軟件中,PHAR(PHP歸檔)文件是一種打包格式,通過將許多PHP代碼文件和其他資源(例如圖像樣式表等)捆綁到一個歸檔文件中來實現應用程式和庫的分發。[1]

PHAR文件可以是三種格式之一:tarZIP(它們與各自的工具相兼容),以及自定義的PHAR格式。無論使用何種格式,所有PHAR文件都使用.phar作為文件擴展名。使用標準的tar和zip應用程式可以創建和解壓縮Tar和Zip格式的歸檔,而PHAR格式的歸檔需要使用自己寫的PHP代碼(利用PHP的PHAR擴展頁面存檔備份,存於互聯網檔案館))或者使用PEARPHP歸檔包頁面存檔備份,存於互聯網檔案館)來創建和提取。

歷史[編輯]

受到Java的JAR文件格式的影響[2],PHAR文件格式創建於2004年,目的在於加快通過FTP部署應用程式的速度[2]。使用更簡單的tar格式而不是使用ZIP文件格式,而使用tar命令行程序創建第一個PHAR文件作為概念驗證[2]。2004年6月14日,最初的PHP歸檔包提交給PEAR,並於2004年12月13日被一致接受[3][4]

PHAR擴展[編輯]

在2007年,PHP歸檔包被移植到C並作為一個PEAR擴展發佈。這個擴展於PHP 5.3.0版本開始集成於PHP內核並且默認被啟用。[5][6][7]

設計[編輯]

PHAR文件允許使用Tar,Zip或者PHAR格式的歸檔。 無論格式如何,每個歸檔都包含三個部分:

  1. 存根(Stub) —— 一個可以引導歸檔的PHP文件。存根必須包含__HALT_COMPILER();語句,並且默認存根擁有在不啟用PHAR擴展的情況下運行PHAR文件的能力。[8]
  2. 清單 —— 清單詳細說明了存歸檔的內容。
  3. 文件內容 —— 歸檔中包含的原始文件

另外,PHAR格式還可以包括用於驗證PHAR完整性的簽名。

清單[編輯]

清單包含有關歸檔的元數據信息及其內容。二進制格式旨在高效地解析PHP和C。它由固定長度的段組成,除了長度規格對之後是可變長度段[9]。 每個文件在全局清單的一段中都有自己的清單。 目前的格式是版本1.1.1。

壓縮[編輯]

所有的3種格式都支持壓縮,但只有PHAR格式同時支持每個文件和整個歸檔的壓縮。Zip和Tar格式分別只支持每個文件壓縮和整個文件壓縮。

執行PHAR文件[編輯]

假設啟用了PHAR擴展,所有格式的PHAR文件可以通過執行PHP解釋器("php file.phar")來執行。 如果沒有啟用PHAR擴展,則只能執行PHAR格式的PHAR文件。

此外,可以將PHAR文件標記為可執行文件,並添加適當的shebang以讓PHAR可以直接執行。

使用情況[編輯]

儘管PHAR最初是為Web用途而設計的,但它經常被用作命令行工具使用。 以PHAR格式分發的流行應用程式包括ComposerPHPUnit英語PHPUnit

參考文獻[編輯]

  1. ^ PHAR file extension - Open .phar files. File-Extensions.org. [2018-02-06]. (原始內容存檔於2018-02-06). 
  2. ^ 2.0 2.1 2.2 PHP 5.3 5th Anniversary: The History of PHP Archives (PHAR Files). blog.engineyard.com. [2018-02-06]. (原始內容存檔於2017-09-17). 
  3. ^ PEPr :: Details :: PHP_Archive. pear.php.net. [2018-02-06]. (原始內容存檔於2017-05-10). 
  4. ^ PEPr :: Votes :: PHP_Archive. pear.php.net. [2018-02-06]. (原始內容存檔於2017-05-10). 
  5. ^ PECL :: Package :: phar. pecl.php.net. [2018-02-06]. (原始內容存檔於2018-02-06). 
  6. ^ PHP: News Archive - 2009. php.net. [2018-02-06]. (原始內容存檔於2018-02-06). 
  7. ^ PHP: PHP 5 ChangeLog. php.net. [2018-02-06]. (原始內容存檔於2018-02-06). 
  8. ^ PHP: Phar::createDefaultStub - Manual. php.net. [2018-02-06]. (原始內容存檔於2018-02-06). 
  9. ^ PHP: Phar File Format - Manual. php.net. [2018-02-06]. (原始內容存檔於2018-02-06). 

外部連結[編輯]