分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

[php] phar

发布时间:2023-09-06 01:25责任编辑:胡小海关键词:暂无标签

build.php打包www目录:

<?phpclass 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包:

<?phpclass 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

原文地址:http://www.cnblogs.com/natian-ws/p/7835277.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved