在java中有*jar(java archive)文档,它的本质是能将多个文件压缩到单个文件,类似于rar或zip文件包,但是jar或war可以作为应用来执行。在PHP5.3以后,PHP的phar扩展也可以实现java这样的档案共功能。它允许开发者创建或者操作PHP档案文件,也就是名称的由来——PHP archive。
例如在下面的代码中,它包含了两个文件:wild.php和domestic.php。为了分发应用,需要分发3个文件。如果有更多的类,要分发的文件数量更多。只分发两个文件的目的是:自身之行的脚本,且phar文件包含了所有必要的类文件。
<?php
include('phar://animals.phar/wild.php');
include('phar://animals.phar/domestic.php');
$test = animal();
printf("%s",$test->get_type);
$test1 = new \wild/animal();
printf("%s",$test1->get_type());
?>
上面的代码在于include指令,它引入了animals.phar文件并全部引用这些文件。
创建一个phar文件很简单,语法如下:
phar pack -f animals.phar -c gzwild.phpdomestic.php
pack参数指明了phar程序用来创建以-f选项指定的文件名的压缩档案包,并加入wild.php和domestic.php两个文件到压缩包中。为了能够成功运行,php.ini配置文件中的phar.readonly参数需为off,如果默认值为on, 则会阻止创建新档案。
phar支持的压缩算法包括zip, gz(gzip), 和bz2(bzip2)。phar改变了PHP应用分发和打包的方式,并节省了存储空间。与java的jar包一样,无须担心性能问题,phar包只能被解析一次,在脚本开始时间占得非常小,不影响执行时间。