使用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

2.初始化composer配置

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

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

    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等项目下)中安装

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

namespace Jian1098\TestRepository; # 命名空间

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

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

<?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标签不建议给别人使用,用来开发调试即可,我们开发调试好了以后新建一个标签提供给他人使用

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

    # 新建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.使用扩展包

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

# 默认安装最新创建的标签版本
composer require jian1098/test_repository

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

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

composer remove jian1098/test_repository

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/576782.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

d10(104-112)-勇敢开始Java,咖啡拯救人生

目录 多态[面向对象的三大特征&#xff1a;封装 继承 多态]polymorphism 多态的好处 多态下的类型转换问题 注意事项 final关键字 注意事项 常量 抽象类abstract 好处 运用场景 接口interface 好处 接口中新增的三种方法&#xff1a; 接口的多继承 内部类[类中五…

江苏开放大学2024年春《机电设备安装与调试 050095》第三次形成性考核作业参考答案

电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题&#xff0c;包含国家开放大学、广东开放大学、超星等等多个平台题库&#xff0c;考试作业必备神器。 公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#…

boot2docker实践@FreeBSD

boot2docker是专为Docker而设计的轻量极Linux发型包&#xff0c;解决Windows、OS X、FreeBSD不能安装Docker的问题。Boot2Docker完全运行于内存中&#xff0c;24M大小&#xff0c;启动仅5-6秒。Boot2Docker需要运行在VirtualBox中&#xff0c;同时意味着有VirtualBox就能运行Bo…

万业企业发布23年年报、24年一季报,集成电路业务同比大增近七成 转型成效显著

4月26日晚间&#xff0c;万业企业&#xff08;600641&#xff09;发布2023年年度报告及2024年一季度报告。2023年&#xff0c;公司实现营业收入9.65亿元&#xff0c;归母净利润1.51亿元。其中&#xff0c;公司集成电路设备制造业务收入较上年同期大幅增长67.53%&#xff0c;公司…

CYCLE:学习自我完善代码生成

目录 IntriductionOverview of the Approach 预训练的代码语言模型在代码生成方面取得了可喜的性能&#xff0c;并提高了人类开发人员的编程效率。然而&#xff0c;现有的代码 LM 评估通常忽略了它们的 自我求精能力&#xff0c;这些评估仅关注一次性预测的准确性。对于代码 L…

Leetcode - 周赛394

目录 一&#xff0c;3120. 统计特殊字母的数量 I 二&#xff0c;3121. 统计特殊字母的数量 II 三&#xff0c;3122. 使矩阵满足条件的最少操作次数 四&#xff0c;3123. 最短路径中的边 一&#xff0c;3120. 统计特殊字母的数量 I 本题就是统计有多少个字母的大小写同时出现…

AIGC学习步骤

目录 AIGC学习步骤 步骤一&#xff1a;理解基本概念 步骤二&#xff1a;学习资源 步骤三&#xff1a;深入研究 步骤四&#xff1a;联系专家 步骤五&#xff1a;实践应用 步骤六&#xff1a;持续学习 AIGC学习步骤 我们先来说说什么是AIGC&#xff1f; 生成式人工智能—…

第二篇:Python环境搭建:从初学者到专家

Python环境搭建&#xff1a;从初学者到专家 在编程的世界里&#xff0c;准备好一个高效而舒适的开发环境是走向成功的第一步。在这篇博客文章中&#xff0c;我们将一起探索如何为Python编程搭建一个理想的环境。无论你是完全的新手还是希望提升现有的技能&#xff0c;本文都会…

IDEA快速入门

目录 1. 概述 2. 安装 3. 激活 4. 关闭自动更新 5. 创建Java项目 5.1 配置JRE 5.2 创建项目 6. 配置设置 6.1 主题 6.2 设置字体默认大小 6.3 鼠标滚轮改变字体大小 6.4 设置自动导入 6.5 项目选择 7. lombok插件 7.1 安装插件 7.2 启用注解 8. 安装包及插件…

SecuPress Pro 专业级WordPress网站安全防护插件优化版

下载地址&#xff1a;SecuPress Pro 专业版.zip SecuPress Pro&#xff1a;专业的WordPress安全解决方案 如果您没有时间进行每周扫描&#xff0c;SecuPress Pro将是您的理想选择。SecuPress Pro提供了所有SecuPress Free的功能&#xff0c;同时还增加了一些高级选项&#xff…

优维全新力作:统一采控平台

在本月&#xff0c;优维新一代核心系统「EasyOps」7.0大版本重磅上线&#xff0c;为广大用户带来了“更核心、更智能、更开放、更客制”的产品能力。&#xff08;点击回看&#xff1a;重磅&#xff01;优维科技发布EasyOps7.0大版本&#xff09;在本次版本能力分享上&#xff0…

VBA技术资料MF145:清空回收站

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

各种CSS导航代码集合!CV即可!水平导航,垂直导航,jd粘性导航…

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

mysql的多表查询和子查询

多表查询&#xff1a;查询数据时&#xff0c;需要使用多张表来查询 多表查询分类&#xff1a; 1.内连接查询 2.外连接查询 3.子查询 笛卡尔积&#xff1a; create table class (id int primary key auto_increment,name varchar(10) ); create table student (id int primar…

【TCP:可靠数据传输,快速重传,流量控制,TCP流量控制】

文章目录 可靠数据传输TCP&#xff1a;可靠数据传输TCP发送方事件快速重传流量控制TCP流量控制 可靠数据传输 TCP&#xff1a;可靠数据传输 TCP在IP不可靠服务的基础上建立了rdt 管道化的报文段 GBN or SR 累计确认&#xff08;像GBN&#xff09;单个重传定时器&#xff08;像…

搞懂特殊的引用类型接口、枚举、注解、记录、包装类!

面向对象系列——特殊的引用类型&#xff08;与class并列地位&#xff09; 文章目录 面向对象系列——特殊的引用类型&#xff08;与class并列地位&#xff09;特殊的&#xff1a;接口、枚举、注解、记录&#xff0c;包装类一、interface接口(不是类)—提供一种规范(具有多态性…

ionic 中对Input输入框、searchbar进行solr检索

一、概述 Ionic 是一个用于开发跨平台应用程序的开源工具&#xff0c;可以使用 Angular、React 或 Vue 等前端框架。要在 Ionic 应用程序中实现实时与 Solr 通信&#xff0c;可以使用 HTTP 客户端&#xff08;如 Angular 的 HttpClient 或 Ionic 的 Native HTTP&#xff09;…

MySQL—MySQL的存储引擎之InnoDB

MySQL—MySQL的存储引擎之InnoDB 存储引擎及种类 存储引擎说明MyISAM高速引擎&#xff0c;拥有较高的插入&#xff0c;查询速度&#xff0c;但不支持事务InnoDB5.5版本后MySQL的默认数据库存储引擎&#xff0c;支持事务和行级锁&#xff0c;比MyISAM处理速度稍慢ISAMMyISAM的…

一分钟教你下载小程序视频到手机#下载高手

本文就教你们如何下载小程序的视频到手机 首先将小程序视频下载到电脑上&#xff0c;然后再传送到手机上,这样就实现了下载小程序到手机上 可是怎么将小程序下载到电脑上呢&#xff1f;这里要借用一个工具&#xff1a;下载高手 下载高手工具我已经打包好了&#xff0c;有需要…

【算法题解】

文章目录 day4_26最长回文子串思路&#xff1a;代码&#xff1a; **DP30** **买卖股票的最好时机(一)**思路&#xff1a;贪心代码&#xff1a; 过河卒思路&#xff1a;动态规划---路径类代码&#xff1a; day4_26 https://www.nowcoder.com/questionTerminal/12e081cd10ee4794…