MENU

教你如何创建自己的Composer包

2021 年 02 月 27 日 • 阅读: 2595 • 技术文章

本次教程中,我已忽略了Composer的安装过程(ps:安装简单,可百度),那么,我们直接进入教程环节:

PS:教程最后,我会附上命令截图

一、首先我们创建一个空的目录,并且运行以下命令初始化一个空白的composer包(命令都是在终端中执行)

composer init

二、此时需要输入包名

This command will guide you through creating your composer.json config.`
Package name (<vendor>/<name>) :
我在这里写了2free.cn/oreo,回车

三、需要输入描述

Description []:
我在这里写了Test procedure (当然这是一个描述,你可以随便写你程序描述,切记要输入英文),回车

四、需要输入作者

Author [Oreo <609451870@qq.com>, n to skip]:
该选项如果有默认值,可以直接回车,为了演示我再次输入了这项,Oreo mailto:609451870@qq.com,回车

五、需要输入最低稳定版本

Minimum Stability []:
该选项有可选值:stable, RC, beta, alpha, dev 一般填dev

六、需要输入包类型

Package Type (e.g. library, project, metapackage, composer-plugin) []:
可选项在提示中已经有了,我们一般选library

七、需要输入开源协议

License []:
根据自己情况填写,我们填Apache

八、设置包需要依赖的其他环境或者包

Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
如果需要设置依赖环境或者其他包,则输入yes回车,会让你搜索,我们这里给包设置php版本必须大于7.1.0,所以搜索php。
Enter the version constraint to require (or leave blank to use the latest version):
输入最低要求版本号 >=7.1.0
PS:如果需要设置多个环境要求,则重复搜索填写即可,如果不需要了,则在Search for a package:不填写内容,直接回车即可。

九、接下来设置依赖包

Would you like to define your dev dependencies (require-dev) interactively [yes]?
我们不需要 直接回车回车,确认信息,yes 回车 初始化完成
Do you confirm generation [yes]? yes
Would you like to install dependencies now [yes]? yes

1.jpg

十、安装完成

安装完成,可以看到我们的目录生成了如下结构。

2.jpg

vendor是composer存放包的地址,所有的包都存放在该路径中统一管理,并且composer提供了命名空间自动加载的功能,我们在使用过程中只需要引入composer的统一入口文件即可
require "vendor/autoload.php";

但是我们也需要在包的配置文件中写上需要自动加载哪个目录才有效!

编辑composer.json文件

1.jpg

这里的路径需要根据你自己的来定,也可以参考以上写法即可。

写完之后需要运行一下命令行composer dump-autoload更新composer的命名空间与文件夹映射关系。

然后我们创建src文件夹,再创建oreo文件夹,在里面创建Test.php文件
写上命名空间 Oreo; 根据psr-4规范,类名要与文件名相同。

<?php
namespace Oreo;
class Test
{
    function test()
    {
        echo "Form Test -> test()";
    }
}

再在最外层写下index.php测试文件,正确做法是创建demo文件夹 然后再写测试文件。

<?php
require "vendor/autoload.php";
$Test = new Oreo\Test();
$Test->test();

于是我们现在的文件目录结构如下,运行index.php正确得到内容Form Test -> test()
1.jpg

composer包的制作已经讲完了,接下来上传composer包的过程,我下次更新。