PHAR (文件格式)
此條目過於依賴第一手來源。 (2018年2月5日) |
在軟體中,PHAR(PHP歸檔)文件是一種打包格式,通過將許多PHP代碼文件和其他資源(例如圖像,樣式表等)捆綁到一個歸檔文件中來實現應用程式和庫的分發。[1]
副檔名 |
.phar |
---|---|
開發者 | PHP, Davey Shafik, Greg Beaver, Marcus Börger |
格式類型 | 文件歸檔, 數據壓縮 |
延伸自 | ZIP, tar |
PHAR文件可以是三種格式之一:tar和ZIP(它們與各自的工具相兼容),以及自定義的PHAR格式。無論使用何種格式,所有PHAR文件都使用.phar
作為文件擴展名。使用標準的tar和zip應用程式可以創建和解壓縮Tar和Zip格式的歸檔,而PHAR格式的歸檔需要使用自己寫的PHP代碼(利用PHP的PHAR擴展(頁面存檔備份,存於網際網路檔案館))或者使用PEAR的PHP歸檔包(頁面存檔備份,存於網際網路檔案館)來創建和提取。
歷史
編輯受到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格式的歸檔。 無論格式如何,每個歸檔都包含三個部分:
- 存根(Stub) —— 一個可以引導歸檔的PHP文件。存根必須包含
__HALT_COMPILER();
語句,並且默認存根擁有在不啟用PHAR擴展的情況下運行PHAR文件的能力。[8] - 清單 —— 清單詳細說明了存歸檔的內容。
- 文件內容 —— 歸檔中包含的原始文件
另外,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格式分發的流行應用程式包括Composer和PHPUnit。
參考文獻
編輯- ^ PHAR file extension - Open .phar files. File-Extensions.org. [2018-02-06]. (原始內容存檔於2018-02-06).
- ^ 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).
- ^ PEPr :: Details :: PHP_Archive. pear.php.net. [2018-02-06]. (原始內容存檔於2017-05-10).
- ^ PEPr :: Votes :: PHP_Archive. pear.php.net. [2018-02-06]. (原始內容存檔於2017-05-10).
- ^ PECL :: Package :: phar. pecl.php.net. [2018-02-06]. (原始內容存檔於2018-02-06).
- ^ PHP: News Archive - 2009. php.net. [2018-02-06]. (原始內容存檔於2018-02-06).
- ^ PHP: PHP 5 ChangeLog. php.net. [2018-02-06]. (原始內容存檔於2018-02-06).
- ^ PHP: Phar::createDefaultStub - Manual. php.net. [2018-02-06]. (原始內容存檔於2018-02-06).
- ^ PHP: Phar File Format - Manual. php.net. [2018-02-06]. (原始內容存檔於2018-02-06).