phar (“Php ARchive”) 是PHP里类似于JAR的一种打包文件。如果你使用的是PHP5.3或更高版本,那么phar后缀文件是默认开启支持的,你不需要任何其他的安装就可以使用它。
phar归档文件有三种格式:tar归档、zip归档、phar归档,前两种执行需要php安装phar 扩展支持,用的也比较少,这里主要讲phar归档格式。
phar文件缺省状态是只读的,使用phar文件不需要任何的配置,部署非常方便。因为我们要创建phar文件,所以需要允许写入phar文件,这需要修改一下php.ini
。找到phar.readonly
将其修改为phar.readonly = off
,注意不要忘记去掉前面的注释分号;
。
一、创建phar文件
我们建立项目文件夹project,目录内结构如下:
1 2 3 4 5 6 7 8 9 |
static -common.js -app.css lib -liba.php template -msg.html index.php common.php |
项目文件有了,现在我们开始创建phar文件。首先在project同级目录下创建文件build.php,用于产生phar格式文件。内容如下:
1 2 3 4 5 6 7 8 9 10 11 |
/** * @Author 木凡 * @DateTime 2020-04-24T15:03:49+0800 * @Domian http://mounui.com */ // 产生一个myphar.phar文件 $phar = new Phar('myphar.phar'); // 添加project里面的所有文件到myphar.phar文件 $phar->buildFromDirectory(dirname(__FILE__) . '/project'); // 设置执行时的入口文件,这里都设置为index.php。注意:如果项目不具备单一执行入口则不宜使用phar归档文件 $phar->setStub($phar->createDefaultStub('index.php')); |
new Phar的参数是压缩包的名称。buildFromDirectory指定压缩的目录,第二个参数可通过正则来制定压缩文件的扩展名。执行build.php文件就创建了一个myphar.phar文件。
在创建过程中可能会遇到错误提示“creating archive "myphar.phar" disabled by the php.ini setting phar.readonly”,这里就是没有修改php.ini中phar.readonly = off
引起的。
二、使用phar文件
在使用的时候我们只需要直接引入phar文件就可以了
1 2 3 4 5 6 7 8 9 |
/** * @Author 木凡 * @DateTime 2020-04-24T15:10:55+0800 * @Domian http://mounui.com */ // 当我们使用index.php文件的时候只需要引入myphar.phar就可以,因为创建的时候我们设置的入口文件就是index.php include "myphar.phar"; // 使用其他文件的时候不仅要引入phar,还要单独引入要使用的文件 include "phar://myphar.phar/common.php"; |
在实际项目中一般会在入口文件中导入其他所需的全部文件,所以如果项目不具备单一入口不宜使用phar归档文件。
三、还原phar文件
1 2 3 4 5 6 7 8 9 |
/** * @Author 木凡 * @DateTime 2020-04-24T15:15:55+0800 * @Domian http://mounui.com */ // 需要还原的phar文件,路径不要写错 $phar = new Phar('myphar.phar'); // 这里填写phar文件的还原路径和名称 $phar->extractTo('myphar'); |
经过打包归档后的文件在使用的时候并不会影响效率,而且方便部署。