PHP 如何创建一个 composer 包 并在 项目中使用自己的 composer sdk 包

2023-09-16 12:36:21

第一步创建一个composer SDK项目 创建一个 composer.json文件或使用 命令 (如果不清楚怎么弄 直接跳过即可,一般都会默认配置)

composer init

 这是生成的composer.json文件

将自己要使用的包添加到 require 中,如果没有require则自己添加 (composer文件中必须用双引号不能使用单引号) 必须引入PHP包 版本看项目的使用环境而定  执行composer update 命令更新composer包

也可以使用 composer 命令添加 示例:

composer require guzzlehttp/guzzle:^6.0
{
    "name": "test/sdk", #包的名称
    "description": "这是测试sdk", #SDK的详情介绍
    "type": "library", #包的类型
    "authors": [   #作者消息
        {
            "name": "xxxxxx",
            "email": "xxxxxx@qq.com"
        }
    ],
    "require": {  #需要引入的包
        "php": ">=7.2",  #PHP 大于等于7.2的版本 必须引入PHP包
        "guzzlehttp/guzzle": "~6.0" 
    },
    "autoload": { # 自动加载的配置
        "psr-4": { #代码规范  PSR-4 是 PHP 命名空间和类文件的标准
            # 设置命名空间 名称  src/ 则是当前命名空间 Test\Sdk\ 指定的 文件地址
            "Test\Sdk\": "src/php"
        }
    },
}

第二步在 src文件下面创建一个PHP类 示例 :(命名空间必须是 composer 中配置的 autoload 下的 psr-4 中配置 命名空间)

<?php

namespace Test\Sdk;

class TestSdk
{
    protected  $data = [];

    public function setSdkVersion($version){
        $this->data['sdk_version'] = $version;
        return $this;
    }
    public function setSdkType($type){
        $this->data['sdk_type'] = $type;
        return $this;
    }
    public function getData()
    {
        return $this->data;
    }
}

 

 第三步 在项目根目录中 创建一个php 文件用来测试是否 可以执行 创建一个testSdk.php 文件

 

<?php
// 引入composer 包
require __DIR__.'/vendor/autoload.php';
// 引入 test sdk
use Test\Sdk\TestSdk;
// 实例化 test sdk
$test_sdk = new TestSdk();
# 执行sdk 中的方法
$data = $test_sdk->setSdkType('php') # 设置 sdk 类型
    ->setSdkVersion('1.0.0') # 设置 sdk 版本
    ->getData(); # 获取 设置的数据

var_dump($data);

 点击运行脚本

  执行成功 

第四步 将包上传到远程仓库

 将修改的文件 提交到本地仓库 然后 推送分支到 远程仓库

点击推送即可

 查看远程仓库 分支已经存在 

 创建合并 并 合并分支

接下来回到 本地 使用 phpstrom 切换本地 分支到默认分支 并 本地默认分支 pull 同步一下远程分支(不用切换分支也可以,在当前分支打标记点击推送勾选推送标签选择推送到所有即可 提交文件和标签可同时进行 但是为了规范 最好是去默认分支打标签 否则打的标签指定的分支不会是默认分支)

切换分支

拉取默认分支 内容

接下来给 当前包 打标签  git命令是 git tag 标签名称

phpstrom则是在界面左下角选择 git -》选择日志 -》选择提交记录 右键 选择 add tag 中文则是 新建标记

接下来将 标签 提交到远程仓库

点击推送即可

我们来到远程仓库 

标签已经创建成功

 接下来重点来了 我们如何将 我们自己创建的包使用到自己的项目中

打开一个新的项目 我们创建一个composer.json 文件

 在composer 文件中 加入 require 和 repositories 数据 执行composer update 执行更新即可

{
    "require": {
        "test/sdk": "1.0.*"
    },
     #  引入仓库composer 包
    "repositories": [
        # 包的列表
        {
            #包的类型 因为是git 仓库所以是 git
            "type": "git",
            # git shh 仓库地址  
            "url": "git@e.coding.net:xxxxx/xxx/test_sdk.git"
        }
    ]
}

  

(如果没有配置git 环境变量 项目 否则无法使用 composer update 报错)

 现在包成功引入

 接下来我们创建一个PHP文件 实例化执行一下 试试看能否执行

能正式跑通,到此我们就大功告成

更多推荐

如何在Spring Boot中配置双数据源?

如何在SpringBoot中配置双数据源?背景双数据源优点技术用法添加依赖配置数据源创建实体类和存储库配置数据源和实体管理器配置事务管理器实现双数据源背景在许多应用程序中,可能会遇到需要连接多个数据库的情况。这些数据库可以是不同的类型,例如关系型数据库和NoSQL数据库,或者它们可以是相同类型但包含不同的数据。为了处理

Spring Boot 如何配置 Hikari 数据库连接池

目录一、SpringBoot介绍二、什么是数据库连接池三、Hikari介绍四、配置Hikari一、SpringBoot介绍SpringBoot是一个开源的Java框架,它简化了基于Spring的应用程序的开发和部署。它提供了一种快速、方便的方式来创建独立的、可扩展的、生产级别的Spring应用程序。SpringBoot

Matlab--微积分问题的计算机求解

目录1.单变量函数的极限问题1.1.公式例子1.2.对应例题12.多变量函数的极限问题3.函数导数的解析解4.多元函数的偏导数5.Jacobian函数6.Hessian矩阵7.隐函数的偏导8.不定积分问题的求解9.定积分的求解问题10.多重积分的问题求解1.单变量函数的极限问题1.1.公式例子%%%3.1.1.单变量函

Springboot 实践(21)服务熔断机制

在微服务架构中,服务众多,通常会涉及到多个服务层的调用,一旦基础服务发生故障,很可能会导致级联故障,继而造成整个系统不可用,这种现象被称为服务雪崩效应。服务熔断引入熔断器概念,熔断器如果在一段时间内侦测到许多类似错误,就会强迫其以后的多个调用快速失败,不在访问远程服务器,从而防止应用程序不断地尝试执行可能会失败的操作,

sed & awk使用简介

简介本文主要介绍Linux系统的两个神级工具:sed和awk,他们是Linux高手们必备的技能,很值得我们去研究的东西。这里是我在网上书上收集的相关资料,因为这两个工具很有名也很重要,所以这些资料会帮助我更好的了解和熟悉它们。什么是sed在《sedandawk》一书中(1.2AStreamEditor)的解释是:Sed

Text-to-SQL小白入门(六)Awesome-Text2SQL项目介绍

项目介绍项目地址GitHub地址:GitHub-eosphoros-ai/Awesome-Text2SQL:CuratedtutorialsandresourcesforLargeLanguageModels,Text2SQL,andmore.项目首页欢迎大家围观参与、使用、贡献。项目理念这个项目主要收集了针对大型语言

vite和webpack的区别

vite和webpack的区别1、前言2、Webpack2.1Webpack简述2.2Webpack常用插件3、Vite3.1Vite简述3.2Vite插件推荐4、区别4.1开发模式不同4.2打包效率不同4.3插件生态不同4.4配置复杂度不同4.5热更新机制不同5、总结1、前言Webpack和Vite是现代前端开发中非

笔记1.5:计算机网络体系结构

从功能上描述计算机网络结构分层结构每层遵循某个网络协议完成本层功能1.基本概念实体:表示任何可发送或接收信息的硬件或软件进程。协议是控制两个对等实体进行通信的规则的集合,协议是水平的。任一层实体需要使用下层服务,遵循本层协议,实现本层功能,向上层提供服务,服务是垂直的。下一层协议的实现对上层的服务用户是透明的同系统的相

Mysql 数据库基础介绍

Mysql数据库基础介绍一、数据库介绍1.1、数据库的发展史1.1.1、文件管理系统的缺点1.1.2、数据库系统发展阶段1.3、DBMS数据库管理系统1.4、数据库管理系统的优点1.5、数据库管理系统的基本功能1.6、数据库系统的架构1.7、各种数据库管理系统1.7.1、层次数据库1.7.2、网状数据库1.7.3、RD

TCP/IP协议栈各层涉及到的协议

21/tcpFTP文件传输协议22/tcpSSH安全登录、文件传送(SCP)和端口重定向23/tcpTelnet远程连接80/tcpHTTP443/tcpHTTPS计算机各层网络协议五层:应用层:(典型设备:应用程序,如FTP,SMTP,HTTP)DHCP(DynamicHostConfigurationProtoco

动态规划问题

看一遍就理解:动态规划详解-什么样的问题可以考虑使用动态规划解决呢?如果一个问题,可以把所有可能的答案穷举出来,并且穷举出来后,发现存在重叠子问题,就可以考虑使用动态规划。比如一些求最值的场景,如最长递增子序列、最小编辑距离、背包问题、凑零钱问题等等,都是动态规划的经典应用场景。-动态规划的解题思路动态规划的核心思想就

热文推荐