Home > Backend Development > PHP Tutorial > Phar:PHP文件存档

Phar:PHP文件存档

WBOY
Release: 2016-06-13 11:55:05
Original
1785 people have browsed it

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 
Copy after login
终端可以直接运行。


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';}
Copy after login
使用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');
Copy after login
上面代码用来添加文档,添加了4个文档。最后一个time.php在test目录下面。


2.3 phar文件存根


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

用setStub方式来创建

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

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


3. Phar文档使用


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

一般有下面两种方式:

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

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

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


还可以直接读取:

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


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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template