简单来说,Phar就是把Java界的jar概念移植到了PHP界。

Phar可以将一组PHP文件进行打包,还可以创建默认执行的stub(或者叫做 bootstrap loader),Phar可以选择是否进行压缩,可选gzip和bzip2格式。

下面举例说明如何创建和使用Phar:

假设我们的项目名称是user,包含三个文件:

user/user.class.php

<?phpclass user {private $name="anonymous";private $email="anonymous@nonexists.com";public function set_email($email) {$this->email=$email;}public function set_name($name) {$this->name=$name;}public function introduce() {echo "My name is $this->name and my email address is $this->email.\n";}}

user/user.func.php

<?phprequire_once "user.class.php";function make_user($name,$email) {$u=new user();$u->set_name($name);$u->set_email($email);return $u;
}function dump_user($u) {$u->introduce();
}

user/test.php

<?php
require_once "user.class.php";$u=new user();
$u->set_name("laomeng");
$u->set_email("laomeng@163.com");
$u->introduce();

然后我们使用如下PHP程序创建Phar文件:

make_phar.php

<?php
$phar = new Phar('user.phar', 0, 'user.phar');
$phar->buildFromDirectory(dirname(__FILE__) . '/user');
$phar->setStub($phar->createDefaultStub('test.php', 'test.php'));
$phar->compressFiles(Phar::GZ);

执行 php make_phar.php后,可以在当前目录发现一个叫做user.phar的文件。

我们可以直接执行user.phar文件:

php user.phar,这个相当于执行user/test.php

我们还可以引用此文件:

test_phar.php

<?php
require_once "user.phar";
require_once "phar://user.phar/user.class.php";
$u=new user();
$u->set_name("mengguang");
$u->set_email("mengguang@gmail.com");
$u->introduce();require_once "phar://user.phar/user.func.php";$u=make_user("xiaomeng","xiaomeng@163.com");
dump_user($u);

参考资料:

https://php.net/manual/en/book.phar.php

转载于:https://www.cnblogs.com/wangzhaobo/p/8295080.html

使用Phar来打包发布PHP程序相关推荐

  1. Inno Setup 打包发布exe程序的步骤及注意事项及解决发布后的exe解压后文件都在主目录下导致程序无法正常运行的问题

    目录 一.链接.exe文件的.dll动态链接库 1.1.可以利用QT官网提供的工具windeployqt 生成方式见如下: 1.2.使用脚本文件 二.使用绿色汉化版打包小程序inno setup5.5 ...

  2. Linux Qt打包发布应用程序

    1.新建脚本文件pack.sh SensorMaster.sh (1)pack.sh #!/bin/sh exe="SensorMaster" #你需要发布的程序名称 des=&q ...

  3. 【Qt】在ubuntu上打包发布Qt程序,可以不依赖Qt环境

    参考博客 https://blog.csdn.net/theArcticOcean/article/details/68069964 https://blog.csdn.net/hjl_1991/ar ...

  4. QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64)

    QT学习笔记(三):Qt软件打包发布(QT5.8 _msvc2013_64+Win10_64) 1.编译方式介绍: 2.动态编译方式打包发布QT程序: 方法一:手动复制 方法二:使用工具 问题& ...

  5. 麒麟系统开发笔记(八):在国产麒麟系统上使用linuxdeployqt发布qt程序

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/127484901 红胖子(红模仿)的博文大全:开发技术集 ...

  6. Windows下VS2019软件打包发布 2020-11-19

    Windows下VS2019软件打包发布 一.配置环境 二.实际步骤 1.添加Setup到解决方案 2.添加文件及主输出 3.重要!!!!!!!! 4.最终打包 一.配置环境 很多使用者的电脑中并没有 ...

  7. qt命令行程序启动外部进程_QT之程序打包发布

    1.引言 QT开发完之后,如果直接把exe文件发给别人,是没法直接用的,因为会提示缺少很多库,一种方法是把这些库拷贝出来,一起发过去,但是这样不方便且文件很大,所以需要一种文件打包发布的方法. 2.环 ...

  8. qt调用linux 进程,Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/u014746574/article/d ...

  9. Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本)

    Linux 下qt 程序打包发布(使用linuxdelpoyqt ,shell 脚本) 转载于:https://www.cnblogs.com/zhehan54/p/9549017.html

最新文章

  1. 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数
  2. Android之在linux环境不通过TAG快速过滤日志
  3. Python中的虚拟环境-virtualenv
  4. win11如何取消开机自检 windows11取消开机自检的设置方法
  5. python dbf转excel_如何在python中将dbf转换为csv?
  6. 无线打印服务器三星3200,求助三星3200打印机“USB打印机不可用”
  7. SI24R1引脚及软硬件中文开发资料
  8. 【计算机网络】“三次握手”通俗解释
  9. 大学生IT创业还有神话吗?
  10. 删除右键菜单中多余项
  11. 算法与数据结构 - 数组详解
  12. 鸡兔同笼之Python函数
  13. 奇安信和深信服哪个好_你为什么从深信服离职?
  14. Vue 2.x折腾记 - (17) 基于Ant Design Vue 封装一个配置式的表单组件
  15. 企业内网怎么连接外网?
  16. archlinux安装nvidia驱动
  17. 洛谷 P2698 [USACO12MAR]花盆Flowerpot 单调队列
  18. 【gitee报用户名和密码错误[session-694cc0ab] chenbingxin: Incorrect username or password (access token)】
  19. java打包成docker images
  20. c# 控制音量大小 CoreAudioApi

热门文章

  1. 学习java的步骤_java学习的基本步骤
  2. java 方法中定义类_在Java方法中使用类定义
  3. oracle+创建序列自增,oracle序列详解和建立自增主键
  4. html简单网页代码表白_表白网页代码,不会代码也可以操作,告别单身
  5. Serverless 时代 DevOps 的最佳打开方式
  6. 阿里雷卷:Reactive 基金会的成立将对开发方式带来哪些影响?
  7. APP元素定位操作API
  8. Python中文件的介绍以及操作
  9. dao传递类参数 mybatis_MyBatis DAO层传递参数到mapping.xml 几种方式
  10. sougou ubuntu 优麒麟_优麒麟(Ubuntu Kylin)17.04 正式版及银河麒麟社区版发布