build.php打包www目录:

<?php
class A{
public $a = 1;
}
$p = new Phar('test.phar',0,'test.phar');
$p->buildFromDirectory(dirname(__FILE__)."/www");
//访问phar包外面的文件(require "test.phar")将会执行stub设置的内容
//$p->setDefaultStub('a.php','a.php');
//或
//$stub = $p->createDefaultStub('a.php','a.php');;
//$p->setStub($stub);
//或
$p->setStub("<?php echo 'sssssssssss';__HALT_COMPILER();?>");//__HALT_COMPILER();结尾
//设置metadata,序列化形式保存在phar包里,使用phar包的时候会自动反序列化
$p->setMetadata(new A);
var_dump($p->getMetadata());
?>

index.php中包含phar包:

<?php
class A{
function __destruct(){
echo "destruct";
}
}
require "test.phar";
?>

访问 build.php 进行打包:

生成 test.phar

test.phar包:

访问 index.php

上面通过 require "test.phar" 的方式引用了phar包里的所用文件

“ssssssssss”是设置的stub,“执行” 包时首先执行stub;“destruct” 是 new A对象反序列化时执行的__destruct 函数的输出。

以上析构函数__destruct的执行利用了phar的metadata保存序列化且使用phar包的时候反序列化的特性。

另一种 phar 包的利用:include "phar://test.phar/b/b.php"

修改后缀后同样可以:

参考:

http://blog.csdn.net/wang740209668/article/details/52751915

http://blog.csdn.net/u011474028/article/details/54973571

http://www.91ri.org/13363.html

[php] phar的更多相关文章

  1. PHP的学习--使用phar打包

    前段时间写了几个PHP的脚本,但是因为脚本的项目是基于composer安装的,给别人使用的时候不太方便,就希望能够打包成一个能直接使用的文件. 搜索了一下,发现可以使用phar打包. 假设我们有如下一 ...

  2. phar文件的使用

    1.用php命令行 php phar文件 2.生成bat文件,在命令行下使用,以composer.phar为例 ( 1)在php.exe所在目录新建composer.bat文件 (2)把compose ...

  3. 使用phar上线你的代码包

    在我前一阵子写的一篇文章<新版 SegmentFault 重构之系统架构>中,很多人对其中提到的利用phar上线代码比较感兴趣,我就在这边跟大家分享下我目前的做法. 哪些项目适合phar打 ...

  4. PHP中phar包的使用

    PHP5.3之后支持了类似Java的jar包,名为phar.用来将多个PHP文件打包为一个文件. 首先需要修改php.ini配置将phar的readonly关闭,默认是不能写phar包的,includ ...

  5. Yii2框架打包成Phar包报错的经历

    以yii2为例 打包文件过程比较简单,但打包好以后简单测试yii命令,一直报错: PHP Fatal error: Uncaught yii\base\InvalidParamException: T ...

  6. Phar与Composer

    如果你想把PHP玩出像Java那样的花来,那Phar.Composer甚至Phing应该都是必须要玩一遍的. Phar - Php Archive.包管理器,有些类似Java中的jar包,但有所不同. ...

  7. Phar文件

    phar 扩展名文件提供了一种将整个PHP应用程序打包放入一个被称之为phar(PHP archive)的文件从而更加容易便利地发布和安装的方法.就像是java的jar文件有点类似.除了这个功能外,P ...

  8. 简单使用 PHP Phar 打包php代码 笔记

    Phar简介:Phar 归档的概念来自 Java™ 技术的 JAR 归档,它允许使用单个文件打包应用程序,这个文件中包含运行应用程序所需的所有东西.该文件不同于单个可执行文件,后者通常由编程语言生成, ...

  9. Could not open input file: composer.phar

    Yii 2官网推荐用Composer安装框架,但是在本地出错:Could not open input file: composer.phar.后来修改了命令行就ok了,难道是我装的Composer跟 ...

  10. PHAR系列之导言

    由于之前都是在现成的PHP框架下写web项目,一般都只专注于框架内部的使用跟优化.但是对于一些PHP很有特色的功能跟特性很少过多的深入了解.最近做项目调研的时候偶尔注意到一个PHP中一个比较常见的概念 ...

随机推荐

  1. Codeforces Round #369 (Div. 2) A. Bus to Udayland (水题)

    Bus to Udayland 题目链接: http://codeforces.com/contest/711/problem/A Description ZS the Coder and Chris ...

  2. Android操作系统中11种传感器的介绍【转】

    本文转载自:http://www.oschina.net/question/163910_28354 在Android2.3 gingerbread系统中,google提供了11种传感器供应用层使用. ...

  3. seq使用

    转载! 用于产生从某个数到另外一个数之间的所有整数例一:# seq 1 10结果是1 2 3 4 5 6 7 8 9 10例二:#!/bin/bashfor i in `seq 1 10`;doech ...

  4. 《JavaScript DOM 编程艺术 第 2 版》

    第 5 章 最佳实践 平稳退化:现在基本所有带交互的网站都使用 Ajax,SAP 也火起来了,平稳退化真是很难实现了(看到第七章发现我之前的观点是错了) 分离 JS 向下兼容 性能考虑 第 6 章 案 ...

  5. mooc-IDEA 列操作--005

    十一.IntelliJ IDEA -列操作 实例:根据HTTP请求JSON文件,生成一个枚举类 Step1:创建一个枚举类,把要转换的JSON串粘贴进来. 最终要实现效果 Step2:选中第一个100 ...

  6. C语言第七周作业

    每个单词的最后一个字母改成大写 函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写.(这里的"单词"是指由空格隔开的字符串). 函数接口定义: void fun( ...

  7. Vue 基础 day05 webpack 3.x

    什么是webpack webpack 是前端的一个项目构建工具, 它是基于 Node.js 开发出来的一个前端工具 借助于webpack这个前端自动化构建工具, 可以完美实现资源的合并.打包.压缩.混 ...

  8. VLAN 基础设置及Aceess接口

    实验内容 本实验模拟企业网络场景.公司内网是一一个大的局域网,二层交换机S1放置在一楼,在一楼办公的部门有IT部和人事部;二层交换机S2放置在二楼,在二楼办公的部门有市场部和研发部.由于交换机组成的是 ...

  9. Centos6.8忘记MySQL数据库root密码解决方法

    一.更改MySQL配置文件my.cnf,跳过密码验证. 编辑配置文件/etc/my.cnf文件,在[mysqld]下面添加skip-grant-tables,保存退出.如图: vim /etc/my. ...

  10. CentOS7 iptables安装及操作

    添加规则时的考量点: (1)要实现哪种功能:判断添加在哪张表上: (2)报文流经的路径:判断添加在哪个链上: 链上规则的次序: (1)同类规则(访问同一应用),匹配范围小的放上面: (2)不同类规则( ...