PHP的学习--使用phar打包

前段时间写了几个PHP的脚本,但是因为脚本的项目是基于composer安装的,给别人使用的时候不太方便,就希望能够打包成一个能直接使用的文件。

搜索了一下,发现可以使用phar打包。

假设我们有如下一个项目

PHP的学习--使用phar打包

入口文件是index.php,打包前的命令如下:

php index.php

再添加打包脚本之前,需要先修改一下PHP的配置,将phar.readonly改为Off,默认为On,表示只读,在php.ini文件中:

[Phar]
; http://php.net/phar.readonly
phar.readonly = Off

编写构建phar包的脚本,命名为build.php

<?php
$exts = ['php']; // 需要打包的文件后缀
$dir = __DIR__; // 需要打包的目录
$file = 'test.phar'; // 包的名称, 注意它不仅仅是一个文件名, 在stub中也会作为入口前缀
$phar = new Phar(__DIR__ . '/' . $file, FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME, $file);
// 开始打包
$phar->startBuffering();
// 将后缀名相关的文件打包
foreach ($exts as $ext) {
$phar->buildFromDirectory($dir, '/\.' . $ext . '$/');
}
// 把build.php本身摘除
$phar->delete('build.php');
// 设置入口
$phar->setStub($phar->createDefaultStub('index.php'));
$phar->stopBuffering();
// 打包完成
echo "Finished {$file}\n";

执行php build.php就可以看到生成的test.phar包了。

执行php test.phar就跟之前执行php index.php的效果一样了。

参考摘录:

PHP中phar包的使用

使用phar上线你的代码包

上一篇:浅谈javascript中变量作用域和内存(2)


下一篇:CSS实现英文或拼音单词首字母大写