在软件中,PHAR(PHP归档)文件是一种打包格式,通过将许多PHP代码文件和其他资源(例如图像,样式表等)捆绑到一个归档文件中来实现应用程序和库的分发。
PHAR文件可以是三种格式之一:tar和ZIP(它们与各自的工具相兼容),以及自定义的PHAR格式。无论使用何种格式,所有PHAR文件都使用.phar作为文件扩展名。使用标准的tar和zip应用程序可以创建和解压缩Tar和Zip格式的归档,而PHAR格式的归档需要使用自己写的PHP代码(利用[https://php.net/phar PHP的PHAR扩展])或者使用PEAR的[http://pear.php.net/package/PHP_Archive PHP归档包]来创建和提取。
历史
受到Java的JAR文件格式的影响,PHAR文件格式创建于2004年,目的在于加快通过FTP部署应用程序的速度。
PHAR扩展
在2007年,PHP归档包被移植到C并作为一个PEAR扩展发布。这个扩展于PHP 5.3.0版本开始集成于PHP内核并且默认被启用。
设计
PHAR文件允许使用Tar,Zip或者PHAR格式的归档。 无论格式如何,每个归档都包含三个部分:
存根(Stub) —— 一个可以引导归档的PHP文件。存根必须包含__HALT_COMPILER();语句,并且默认存根拥有在不启用PHAR扩展的情况下运行PHAR文件的能力。
清单 —— 清单详细说明了存归档的内容。
文件内容 —— 归档中包含的原始文件
另外,PHAR格式还可以包括用于验证PHAR完整性的签名。
清单
清单包含有关归档的元数据信息及其内容。二进制格式旨在高效地解析PHP和C。它由固定长度的段组成,除了长度规格对之后是可变长度段。 每个文件在全局清单的一段中都有自己的清单。 目前的格式是版本1.1.1。
压缩
所有的3种格式都支持压缩,但只有PHAR格式同时支持每个文件和整个归档的压缩。Zip和Tar格式分别只支持每个文件压缩和整个文件压缩。
执行PHAR文件
假设启用了PHAR扩展,所有格式的PHAR文件可以通过执行PHP解释器("php file.phar")来执行。 如果没有启用PHAR扩展,则只能执行PHAR格式的PHAR文件。
此外,可以将PHAR文件标记为可执行文件,并添加适当的shebang以让PHAR可以直接执行。
使用情况
尽管PHAR最初是为Web用途而设计的,但它经常被用作命令行工具使用。 以PHAR格式分发的流行应用程序包括Composer和。
参考文献
外部链接
- [http://php.net/manual/en/phar.fileformat.phar.php PHAR文件格式]
- [http://php.net/manual/en/book.phar.php PHAR文档]
- [http://pear.php.net/PHP_Archive PHP归档PEAR包]
- [http://pecl.php.net/phar PHAR扩展 (PECL)]
评论 (0)