如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

大多数情况下,大家是用phar-composer来构建基于composer的phar包的。所以,在本篇文章中,苏南大叔就介绍一下,phar-composer的构建命令。其它的命令,如果您有兴趣,可以到官方文档上面去查看。

前言

phar.readonly=off

本文成功执行的前提依然是php.ini中的phar.readonly=off。如果开启phar的readonly的话,本文所述内容,是不会成功的。大家请注意这一点。

利用phar-composer打包phar源码 - 056

打包当前目录

如果您自己的项目,是基于composer的。并且需要打包成phar文件。那么本条内容,就是您所需要的。我们需要在当前项目根目录下面,执行如下语句。

phar-composer build

但是这条语句顺利生成一个phar文件的前提是:该目录使用composer进行管理。也就是说:根目录下面应该有个composer.json。这个文件,我们可以通过下面命令生成。

composer init

这样的话,我们就符合这个phar-compser工具的执行条件了。事实上,代码还是我们的代码,仅仅多了个没有什么用途的composer.json文件而已。这个就免得我们大家再写个构建脚本了。还是挺容易的,推荐使用。如果您还是需要依赖包的话,您还可能需要下列命令。

composer install

利用phar-composer打包phar源码 - 054

利用phar-composer打包phar源码 - 055

利用phar-composer打包phar源码 - composer_error

记得写个index.php文件在根目录下面,作为phar的存根文件。这个是默认零配置的。当然,如果你不喜欢使用index.php作为默认的存根文件的话,那么就可以还是使用传统的代码方式生成phar文件即可。

所以,正确完整的执行姿势是,其中的composer init就一路回车好了。

composer init
composer install
phar-composer build

然后就你可以得到一个phar文件了,需要注意的是:请确保index.php存根文件存在即可。

通过名称打包某个composer库

这个命令就涉及composer的大本营,https://packagist.org 了,我们如果想打包某个库的话,例如aliyuncs/oss-sdk-php,我们需要执行下面的命令。

利用phar-composer打包phar源码 - 057

phar-composer build aliyuncs/oss-sdk-php

这个命令没有什么当前目录的说法,在哪里执行,最终的phar文件就会默认生成在什么地方。

利用phar-composer打包phar源码 - 058

通过git地址打包phar

还是以上述需求为例,我们打包一下aliyun的oss库。

phar-composer build https://github.com/aliyun/aliyun-oss-php-sdk.git

利用phar-composer打包phar源码 - 059

这里需要注意的一点是:这里的git地址,似乎不能识别类似下面的这种地址。
git@github.com:aliyun/aliyun-oss-php-sdk.git

利用phar-composer打包phar源码 - 060

通过命令行交互式打包

phar-composer

输入要打包的项目关键词,选择要打包的序号。
利用phar-composer打包phar源码 - cli_000
选择要打包的项目的版本。
利用phar-composer打包phar源码 - cli_001
打包
利用phar-composer打包phar源码 - cli_002

这里仅仅是演示作用,并不是说,这个打包好的phar一定能用。具体的还要看项目的源码情况,这个功能仅仅是用来打包的。

结论

在phar-composer的git主页上面,还有很多phar-composer的使用方法,大家感兴趣的话,可以去看看。这里,苏南大叔就不一一介绍了。毕竟,我们的需求也就是构建个phar文件而已。您说,是吧?

更多有关php的phar的经验文章,请点击这里查看:https://newsn.net/tag/phar/

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。