• 使用composer开发自己的扩展包


    前言

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

    1.新建仓库

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

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

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

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

    git clone https://github.com/jian1098/test_repository.git
    
    • 1

    2.初始化composer配置

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

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

      composer init
      
      • 1
    • 安装命令行提示输入你的扩展包名称,直接按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等项目下)中安装

    composer require jian1098/test_repository:dev-master
    
    • 1

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

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

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

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

    
    
    namespace Jian1098\TestRepository; # 命名空间
    
    class Hello{
        public function say(){
            echo "hello";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    
    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
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

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

    5.发布扩展包

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

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

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

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

      # 新建1.0.1版本标签
      git tag -a 1.0.1 -m "1.0.1版本"
      
      # 标签推送到github
      git push origin 1.0.1
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 回到Packagist网站,可以看到刚刚发布的1.0.1版本了

    6.使用扩展包

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

    # 默认安装最新创建的标签版本
    composer require jian1098/test_repository
    
    # 安装指定标签版本
    composer require jian1098/test_repository:1.0.1
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    composer remove jian1098/test_repository
    
    • 1
  • 相关阅读:
    绘制一条透明背景的trace,并保存;
    【开题报告】基于uni-app的汽车租赁app的设计与实现
    二叉树的理论知识
    专利一般怎么命名?
    Vue中的方法和事件绑定
    升级macOS Ventura 16 之后出现系统卡住鼠标圈圈问题
    用自己的编程语言实现了一个网站(增强版)
    win10 安装 rabbitMQ详细步骤
    什么是过期域名?做网站用过期域名好不好?
    html5 文字自动省略,html中把多余文字转化为省略号的实现方法方法
  • 原文地址:https://blog.csdn.net/C_jian/article/details/138175520