首页  >  文章  >  后端开发  >  Phar:PHP文件存档

Phar:PHP文件存档

WBOY
WBOY原创
2016-06-13 11:55:051751浏览

Phar:PHP文件归档

1. Phar简介


Phar是PHP Archive缩写,将php文件归档到一个文件包。

将一个模块的文件打包成一个phar,这样方便模块整体迁移,只需将phar文件移动过去,其他环境中include即可使用。

类似于java的 .jar  文件。

php 5.3时,为php的C语言扩展,安装php时会默认安装。

在安装目录 bin下面有phar文件,通过 php -m 查看php扩展,也应该能找到。

$ .bin/phar.phar help 
终端可以直接运行。


2. 创建Phar文件


2.1 修改php.ini配置文件


phar.readonly   = 0  这个参数必须设置为0,如果为1,表示phar文档不可写。

phar.require_hash = 1  这个参数为每个phar打包的文件生成一个签名,如果发现签名有问题,则拒绝处理。防止外部注入一些不安全的脚本。

phar.cache_list   允许web server启动时预加载phar文档,提升访问速度。

                           

2.2 创建phar对象


创建my.phar文件

<?phptry{    $p = new Phar(dirname(__FILE__) . "my.phar", 0, 'my.phar');} catch (UnexpectedValueException $e) {    die('Could not open my.phar');} catch (BadMethodCallException $e) {    echo 'technically, this cannot happen';}
使用startBuffering来打开缓冲,对文件修改,使用缓冲的好处是不用每次修改都保存文件,提升了效率。

$p->startBuffering();$p['file.txt'] = 'hi'; $p['file2.txt'] = 'there';$p['file3.txt'] = 'babyface';$p['file3.txt']->setMetadata(42);$p['test/time.php'] = file_get_contents('time.php');
上面代码用来添加文档,添加了4个文档。最后一个time.php在test目录下面。


2.3 phar文件存根


文件存根是phar最开始运行的一段代码。

用setStub方式来创建

$p->setStub("<?php    Phar::mapPhar('myphar.phar');__HALT_COMPILER();");
最后关闭缓冲区

$p->stopBuffering();
运行后,会在当前目录生成一个myphar.phar文件。


3. Phar文档使用


phar文档很方便的集成到其他应用程序中。使用时跟单个php文件一样看待,直接 include即可。

一般有下面两种方式:

include 'myphar.phar';  
这样把phar中所有的文件都引入了。

include 'phar://myphar.phar/test/time.php';
这个只把test目录下的time.php文件引入了。

引入后可以直接使用原php文件中变量。


还可以直接读取:

echo file_get_contents('phar://my.phar/file.txt');
这个会输出 hi。


地址:http://blog.csdn.net/yonggang7/article/details/24142725

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn