制作composer包提供sdk扩展

news2024/11/16 20:50:38

目录

1、初始化包
2、将代码推送到github远程仓库
3、为写好扩展包打上tag标签标记当前代码版本
4、将包发布到包管理平台

初始化包,生成

Creates a basic composer.json file in current directory

composer init 

composer init 按照引导就可以生成了 , 详细的引导解释如下

This command will guide you through creating your composer.json config.
 
# 1. 输入项目命名空间,我是按github账号名/仓库名
# 注意<vendor>/<name> 必须要符合 [a-z0-9_.-]+/[a-z0-9_.-]+
Package name (<vendor>/<name>) [root/test_composer]:yourname/projectname
 
# 2. 项目描述
Description []:这是一个测试composer init 项目
 
# 3. 输入作者信息,直接回车可能出现如下提示,有的系统可以直接回车,具体为什么?这里不详细介绍
 Invalid author string.  Must be in the format: John Smith <john@example.com>
# 3.1. 注意必须要符合 John Smith <john@example.com>
Author [Alan.Liu <5425902+liuyuanshan11@user.noreply.gitee.com>, n to skip]: liuyuanshan
 
# 4. 输入最低稳定版本,stable, RC, beta, alpha, dev
Minimum Stability []:dev
 
# 5. 输入项目类型
Package Type (e.g. library, project, metapackage, composer-plugin) []:library
 
# 6. 输入授权类型,默认回车
License []:
 
Define your dependencies.
 
# 7. 输入依赖信息,默认回车
Would you like to define your dependencies (require) interactively [yes]?
 
# 7.1. 如果需要依赖,则输入要安装的依赖
Search for a package:php
 
# 7.2. 输入版本号
Enter the version constraint to require (or leave blank to use the latest version): >=7.0.0
 
#  如需多个依赖,则重复以上两个步骤(7.1/7.2),没有则默认回车
Search for a package:
 
# 8. 是否需要require-dev,
Would you like to define your dev dependencies (require-dev) interactively [yes]?
 
{
    "name": "liuyuanshan11/demo",
    "description": "this is test project",
    "type": "library",
    "require-dev": {
        "php": "7.0.0"
    },
    "autoload": {
        "psr-4": {
            "Liuyuanshan11\\Demo\\": "src/"
        }
    },
    "authors": [
        {
            "name": "liuyuanshan"
        }
    ],
    "minimum-stability": "dev",
    "require": {}
}
# 9. 是否生成composer.json
Do you confirm generation [yes]?
 
# 现在安装依赖项吗
Would you like to install dependencies now [yes]?

随后调整composer.json配置文件,内容示例如下:

{
    "name": "liuyuanshan11/demo",
    "description": "this is test project",
    "homepage":"https://github.com/liuyuanshan11/demo",
    "require": {
        "php":">=7.0",
        "ext-json": "*"
    },
    "type": "library",
    "autoload": {
        "psr-4": {
            "Liuyuanshan11\\Demo\\": "src/"
        }
    },
    "authors": [
        {
            "name": "liuyuanshan",
            "email": "1019213039@qq.com",
            "homepage":"https://github.com/liuyuanshan11/demo"
        }
    ],
    "minimum-stability": "dev"
}

生成vendor目录

composer update

编写测试代码
src/Test.php

<?php
namespace Liuyuanshan11\Demo;
class Test
{
    function index()
    {
        echo "test";
    }
}

后再根目录 创建一下 index.php 引入类

<?php
use Liuyuanshan11\Demo\Test;

include_once "./vendor/autoload.php";
$obj = new Test();
$obj->index();

执行自动加载命令,为创建的类文件指定自动加载命名空间

composer dump-autoload -o

将代码推送到github远程仓库

# 将代码推送到master远程仓库
 git push origin master

为写好扩展包打上tag标签标记当前代码版本

为当前版本打上tag标签,在发布包管理平台时会使用到,因为包的拉取是根据版本拉取的,默认拉取最新tag标签的版本包

# 创建标签
git tag v1.0.0

# 查看所有标签
git tag

# 远程推送到github仓库
git push origin master --tags

将包发布到包管理平台

先到包管理平台进行注册登录,这里我选择了github账号进行授权登录比较方标

https://packagist.org/

点击【Submit】按钮,将github仓库地址放入解析框,最后点击【Check】便可完成包的发布
在这里插入图片描述
查看发布的包与迭代中的包版本
在这里插入图片描述

下载并使用包示例

下载包,默认拉取最新tag包

composer require liuyuanshan11/sd-micro-service-client

使用包

use liuyuanshan11\SdMicroServiceClient\MicroService;


$services = [
    'queue' => 'https://queue-service.sumian.com',
    'console' => 'https://console-service.sumian.com',
    'organization' => 'https://organization-service.sumian.com',
    'liu' => 'http://sdapi.test.top'
];

$obj = new MicroService('appId', 'appSecret', $services);
var_dump($obj->get('console')->act('controller', 'action', ["key01" => "value01"]));

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python学习笔记 - 异常处理

前言 为了增强程序的健壮性&#xff0c;计算机程序的编写也需要考虑如何处理一些异常的情况&#xff0c;Python 语言提供了异常处理功能&#xff0c;本博文主要介绍 Python 异常处理机制。 一 异常处理举例 为了学习 Python 异常处理机制&#xff0c;首先看下面进行除法运算的…

MySQL的主从复制与读写分离详解

MySQL的主从复制与读写分离详解读写分离概述什么是读写分离为什么要读写分离什么时候要读写分离MySQL主从复制与读写分离主从复制的概念MySQL支持的复制类型主从复制的工作过程主从复制示例保证MySQL主从服务器时间同步主节点服务器配置从节点服务器设置验证MySQL读写分离MySQL…

Vue3 学习笔记 —— Hooks、全局函数和变量、Vue3 插件

目录 1. Hooks 1.1 Vue2 中的 mixins 1.1.1 mixins 是什么&#xff1f; 1.1.2 mixins 缺点&#xff1f; 1.2 Vue3 中的 Hooks 1.2.1 Vue3 Hooks 是什么&#xff1f; 1.2.2 Vue3 内置 hooks 举例 1.2.3 自定义 Hooks 2. 全局函数和全局变量 2.1 app.config.globalProp…

【深入设计模式】适配器模式—一切皆有可能

文章目录1. 适配器模式1.1 适配器模式简介1.2 适配器模式结构1.3 适配器模式示例2. 适配器模式在源码中的应用3. 总结适配器这个词来源于硬件领域&#xff0c;是一个独立的硬件设备接口&#xff0c;允许硬件或电子接口与其它硬件或电子接口相连&#xff0c;比如常见的电源适配器…

(附源码)SSM芜湖公共书房服务平台 毕业设计 250859

SSM芜湖公共书房服务平台 摘 要 一座有底蕴的城市&#xff0c;应该是一个阅读的城市&#xff1b;一个有魅力的城市&#xff0c;应该是一个散发着书香的城市&#xff0c;而全民阅读量逐年增加&#xff0c;是社会进步、文明程度提高的重要标志。各大城市启动“全民阅读”工作以来…

Redis缓存过期和和内存淘汰策略

目录 1、MaxMemory 2、Expire数据结构 3、删除策略 3.1、惰性删除 3.2、主动删除 3.3、缓存淘汰策略 ​​​​​​​3.4、缓存淘汰策略的选择 1、MaxMemory Redis作为DB使用时&#xff0c;为了保证数据的完整性&#xff0c;不允许淘汰任何键值对。Redis作为缓存使用时&…

汇编语言与微机原理 期末半开卷复习整理(上)

8086CPU寄存器 8086&#xff1a;16位&#xff0c;4.77MHz~10MHz,16根数据线&#xff0c;20根地址线 AX/AL:乘除法指令中用作累加器&#xff0c;IO指令中用作数据寄存器&#xff0c;可显式或隐含调用 AH&#xff1a;在LAHF用作目的寄存器&#xff0c;隐含调用。 AL&#xff1a;…

大数据必学Java基础(一百一十一):过滤器注解应用和开发案例

文章目录 过滤器注解应用和开发案例 一、过滤器注解应用 二、开发案例

Python学习日记-第三十八天-生成器(第二节)

系列文章目录 使用greenlet&#xff0c;gevent完成多任务一、使用greenlet&#xff0c;gevent完成多任务 这里要先在pycharm里面提前安装好greenlet和gevent的包 操作&#xff1a; 代码&#xff1a; from greenlet import greenlet import timedef test1():while True:prin…

Android入门第39天-系统设置Configuration类

简介 本节给大家介绍的Configuration类是用来描述手机设备的配置信息的&#xff0c;比如屏幕方向&#xff0c; 触摸屏的触摸方式等。 Configuration给我们提供的方法列表 densityDpi&#xff1a;屏幕密度fontScale&#xff1a;当前用户设置的字体的缩放因子hardKeyboardHidd…

[深度学习] python基础支持汇总

这个系列放一些看神经网络源码过程中的python语法现象 文章目录前言一、list操作://extends/append的区别1.引入2.细致场景再现前言 例如&#xff1a;这个系列放一些看神经网络源码过程中的python语法现象, 直接解析语法太干瘪无聊.希望用这个方式来巩固所学知识 一、list操作…

电商评论文本情感分类(中文文本分类+中文词云图)(第一部分-textcnn)

电商评论文本情感分类(中文文本分类中文词云图) 第一部分 第二部分Bert部分 本项目包含&#xff1a; 1.中文文本处理 2.中文词云图绘制 3.中文词嵌入 4.基于textcnn的中文文本分类&#xff08;Test_Acc89.2000&#xff09; 5.基于bert的中文文本分类&#xff08;Test_Acc0.…

ServiceComb场景及其原理

文章目录Java-ChassisEnableServiceComb初始化SCBSPIServiceUtils自定义SPI加载器职责链管理器FilterChainsManager/ConsumerHandlerManagerRpcSchema注册服务如何保活&#xff1f;RpcReferencePropertySourcesPlaceholderConfigurerThreadPoolExecutorEx/LinkedBlockingQueueE…

深刻理解JAVA并发中的有序性问题和解决之道

问题 Java并发情况下总是会遇到各种意向不到的问题&#xff0c;比如下面的代码&#xff1a; int num 0;boolean ready false; // 线程1 执行此方法 public void actor1(I_Result r) {if(ready) {r.r1 num num;} else {r.r1 1;} } // 线程2 执行此方法 public void actor…

Clickhouse 使用DBeaver连接

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 据处理大致可以分成两大类&#xff1a;联机事务处理OLTP&#xff08;on-line transaction processing&#xff09;、联机分析处理OLAP&#xff08;On-Line Analytical Processing&#xff09;。 OLTP是传统的…

JavaWeb--JDBC核心技术

JavaWeb--JDBC核心技术JDBC核心技术第1章&#xff1a;JDBC概述1.1 数据的持久化1.2 Java中的数据存储技术1.3 JDBC介绍1.4 JDBC体系结构1.5 JDBC程序编写步骤第2章&#xff1a;获取数据库连接2.1 要素一&#xff1a;Driver接口实现类2.1.1 Driver接口介绍2.1.2 加载与注册JDBC驱…

Redis学习笔记(六)

哨兵 哨兵时一个分布式系统&#xff0c;用于对主从结构中的每台服务器进行监控&#xff0c;当出现故障时通过投票机制选择新的master&#xff0c;并将所有slave连接到新的master哨兵的作用 监控 不断检查master和slave是否正常运行master存活检测、master与slave运行情况检测 通…

Linux调度(三)——抢占式调度

目录 抢占式场景一&#xff1a; 抢占式场景二 抢占的时机 用户态的抢占时机 抢占式机一&#xff1a; 抢占时机二&#xff1a; 内核态的抢占时机 时机一 时机二 总结 之前讲了主动式调度&#xff0c;就是进程运行到一半&#xff0c;因为等待I/O等操作而主动让出CPU&a…

动态规划算法(3)(不同方案数问题+拆分问题)

文章目录不同路径不同路径II整数拆分不同的二叉搜索树动态规划解题五步走&#xff1a; 确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 不同路径 力扣传送门&#xff1a; https://leetcode.cn/problems/unique-paths/description/ 确定dp…

[附源码]JAVA毕业设计酒店订房系统(系统+LW)

[附源码]JAVA毕业设计酒店订房系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…