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).