使用composer开发自己的扩展包

前言

日常的开发中我们经常用到composer去安装其他人封装好的扩展包,如果你有好的功能代码想分享给其他人使用,就可以使用composer打包成扩展包。其他人用composer安装后就可以使用你的扩展包了。这篇文章教你如何打包自己的composer扩展包。

1.新建仓库

.在githubgitlabgitee等平台新建一个代码仓库,我这里以github为例新建一个测试仓库(访问不了github的建议下载一个瓦特工具箱(Steam++官网) - Watt Toolkit (steampp.net),可以免费加速github)

登录github后,在左上角点击新建仓库

填写仓库名称、描述、勾选添加README文件、选择一个你喜欢的开源协议(我这里选择Apache License 2.0)然后点击创建即可

创建完成后我们把它clone下来

bash 复制代码
git clone https://github.com/jian1098/test_repository.git

2.初始化composer配置

  • 首先安装好composer,这个步骤我就不多说了,按照百度的安装即可。

  • 然后进入上一步clone下来的仓库目录,然后在该目录下打开cmd(按住Shift,然后右键->在此处打开posershell窗口),执行下面的命令

    bash 复制代码
    composer init
  • 安装命令行提示输入你的扩展包名称,直接按github用户名/仓库名称这种格式填即可

  • 接着输入扩展包描述、作者信息、最低稳定版本的标签(必须是stable, RC, beta, alpha, dev其中一个,一般填dev即可)、扩展包类型、开源协议(上一步创建github仓库我选的Apache License,所以我这里填 Apache-2.0)

  • 后面会让你定义依赖版本,可以直接按两次回车跳过,我这里搜索php,然后要求php版本要>5.4

  • 接下来配置自动加载,按照提示输入src/即可,如果不想要默认的命名空间你可以修改这里

  • 最后就是要你确认信息,是否创建.gitignore文件,是否安装依赖,完了composer初始化到这里就完成了,你会得到src目录.gitignorecomposer.json这些文件

3.提交到composer仓库

  • 首先在上一步的目录中将所有文件提交到github

  • 登录Packagist,使用github账号登录即可(用其他账号可能需要手动配置自动更新)。点击右上角的Submit,然后填写你第一步创建的github仓库地址然后提交就创建好composer仓库了

4.编写和测试扩展

接下来要写你的扩展的具体代码了,不过我们首先要安装刚刚创建好的扩展包。在上一张图片中,复制圈出来的安装命令和标签名组成完整的安装命令,然后在项目(ThinkPHP 或 Laravel等项目下)中安装

bash 复制代码
composer require jian1098/test_repository:dev-master

安装完后可以在vendor目录看到你的扩展包,不过还没有任何的php代码,我这里安装在ThinkPHP项目下

因为src目录是空的,所以提交不了上github,我们手动在扩展目录(图中的vendor/jian1098/test_repository)下新建src目录,用来存放扩展包代码。

接着就可以开始写代码了,注意注意:在扩展包中所有的php文件必须加上你的命名空间!!!而且这里的命名空间必须跟composer.json中配置的autoload psr-4中的保持一致,不然会报错找不到类!!

我这里在src下新建一个Hello.php文件,内容如下:

php 复制代码
<?php

namespace Jian1098\TestRepository; # 命名空间

class Hello{
    public function say(){
        echo "hello";
    }
}

然后我在项目的控制器中引入并调用我写的Hello类进行扩展包的测试和调试

php 复制代码
<?php
namespace app\index\controller;

use Jian1098\TestRepository\Hello;  # 引入扩展包
use think\Controller;

class Index extends Controller
{
    public function index()
    {
        $hello = new Hello();
        $hello->say();  //访问index方法会输出hello
    }

}

到这里,扩展包的编写和测试、调试就算完成了

5.发布扩展包

  • 1.更新github仓库

    再回到我们第1步创建clone下来的扩展包仓库中,将上一步编写好的src目录下所有文件复制到仓库的src目录下,然后提交到github上

  • 2.添加扩展包版本标签

    composer默认的dev-master标签不建议给别人使用,用来开发调试即可,我们开发调试好了以后新建一个标签提供给他人使用

    在扩展包仓库的目录下分别执行

    bash 复制代码
    # 新建1.0.1版本标签
    git tag -a 1.0.1 -m "1.0.1版本"
    
    # 标签推送到github
    git push origin 1.0.1
  • 回到Packagist网站,可以看到刚刚发布的1.0.1版本了

6.使用扩展包

在其他项目下安装你发布的扩展包,指定版本标签即可

bash 复制代码
# 默认安装最新创建的标签版本
composer require jian1098/test_repository

# 安装指定标签版本
composer require jian1098/test_repository:1.0.1

要卸载扩展包,可以执行composer remove命令

bash 复制代码
composer remove jian1098/test_repository
相关推荐
JaguarJack14 小时前
FrankenPHP 原生支持 Windows 了
后端·php·服务端
BingoGo15 小时前
FrankenPHP 原生支持 Windows 了
后端·php
JaguarJack2 天前
PHP 的异步编程 该怎么选择
后端·php·服务端
BingoGo2 天前
PHP 的异步编程 该怎么选择
后端·php
JaguarJack2 天前
为什么 PHP 闭包要加 static?
后端·php·服务端
ServBay3 天前
垃圾堆里编码?真的不要怪 PHP 不行
后端·php
用户962377954483 天前
CTF 伪协议
php
BingoGo6 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack6 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo7 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php