Home » 后端编程 » phar和webphar的入口区别

phar和webphar的入口区别

发布于
如果本文对您有帮助,或者节约了您的时间,欢迎您打赏瓶饮料,建立一下友谊关系。

在前几篇phar经验文章中,我们知道构建一个phar文件,需要指定phar的入口存根文件,而这个存根文件默认是index.php,但是可以创建两个不同的存根文件,为什么需要两个不同的存根文件呢?本篇文章中,苏南大叔将要讲述,这两个不同的存根文件的不同所在,也就是phar和webphar的区别,涉及函数是:createDefaultStubsetStub

前言

本篇文章的基础文章是:https://newsn.net/say/php-phar-create.html ,如果您还没有阅读过这篇文章,建议您先看看这篇文章里面,讲述的创建一个phar文件的相关经验。

创建的phar文件,可以做为一个phar文件供其他其它php代码require或者include,这个时候,就是普通的phar模式。当通过地址url,浏览这个phar文件的时候,这个时候,访问的是这个phar文件下面的作为webphar的存根文件。这个时候,就是webphar模式了。所以说,其实是同一个文件,只不过使用的方式不同,所以出了两个概念。

延伸阅读:https://doc.php.sh/zh/phar.createdefaultstub.html ,官方的这个说明中,第一个参数cli.php太具有迷惑力,实际上cli.php可不一定用在命令行里面的,普通的require("phar.phar")的时候,都是走cli.php这条通道的。

对比图

我们的范例phar文件中,有个lib.php用于createdefaultstub的第一个参数,即最常见的require模式。还有个index.php用于webphar模式。

phar和webphar的入口区别 - phar_source.png

我们稍稍修改一下createDefaultStub函数的参数。

build.php

//...
$phar->setStub($phar->createDefaultStub('lib.php','index.php'));
//...

demo.php

include "phar.phar";

这个demo.php,无论是通过url访问,还是通过命令行模式执行,都加载执行的是lib.php这个入口。

phar和webphar的入口区别 - require_lib.png

而通过url访问phar文件的时候,才是执行的webphar模式下的index.php。注意:这种情况下,一般来说,都是需要配置服务器nginx或者apache的,具体请参见苏南大叔的前几篇文章。

phar和webphar的入口区别 - webphar.png

结论

对比图非常明显的显示了两者的区别,所以不要单纯的学习网上流传的教程,把两者设置为同一个入口,两者是有不同的使用场景的。只不过,场景比较罕见而已。

更多有关phar相关经验文章,请点击苏南大叔的文章。https://newsn.net/tag/phar/

想要获取完整源码或相关软件?点击这里获取相关内容

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/phar-vs-webphar.html
上一篇好文:apache的fastcgi模式下,phar安全设置
下一篇好文:phar包的外部调用方式
尊重原创内容,转载请保留链接信息,感谢您的阅读

如果本文对您有帮助,或者节约了您的时间,欢迎您打赏瓶饮料,建立一下友谊关系。
欢迎关注微信公众号“苏布斯看世界”:
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。

相关文章

添加新评论