购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.23 利用phar扩展来节省空间

在Java中有*.jar(Java archive)文档,它的本质是能将多个文件压缩到单个文件,类似于rar或zip文件包,但是jar或war可以作为应用来执行。

在PHP5.3以后,PHP的phar扩展也可以实现Java这样的档案功能。它允许开发者创建或操作PHP档案文件,也就是名称的由来——PHP archive。

在下面的代码里,它包含了两个文件:wild.php和domestic.php。为了分发应用,需要分发3个文件。如果有更多的类,要分发文件的数量更多。只分发这两个文件的目的是:自身执行脚本,且phar文件包含了所有必要的类文件,如代码清单1-47所示:

代码清单1-47 使用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文件并全部引用这些文件。

那么,我们讨论一下如何创建类文件?正如Java提供jar外部程序文件一样,PHP5.3也提供了称为phar的外部应用程序。

创建一个phar文件很简单,语法如下:


phar pack f animals.phar c gzwild.phpdomestic.php

pack参数指明了phar程序用来创建以-f选项指定的文件名的压缩档案包,并加入wild.php和domestic.php两个文件到压缩包中。为了能够成功运行,php.ini配置文件中的phar.readonly参数需为off,如果默认值为on,会阻止创建新档案。我们使用的压缩算法为zip,phar支持的压缩算法包括zip、gz(gzip)和bz2(bzip2)。

phar改变了PHP应用分发和打包的方式,并节省了存储空间。虽然不像命名空间或Nowdoc等特性那样吸引人注意,但对PHP应用分发方式开始有影响,比如一些主流开源程序如phpMyAdmin、WordPress等,都已经或开始尝试以phar方式发布。

与Java的jar包一样,亦无须担心性能问题,phar包只被解析一次。在脚本开始时间占得非常小,不影响执行时间。 xAuAl9SOZK3b27alvoxUBMdUIj9CcAC4jaZNEt+21s+6e7Sb1NSGEAIk7CL0P75a

点击中间区域
呼出菜单
上一章
目录
下一章
×