PHP-Composer包开发、发布流程

Composer对与分发自己的PHP软件包,方便别人引用来说是很好的一种方式。平时开发中经常会用到Composer来引入三方的优质软件包,例如 Laravel、easywechat等等,如果我们有一些好的想法如果分发出去呢?下面我们就一步步来告诉大家如何实现自己的第一个Composer包。

初始化项目

首先创建composer.json文件用于声明包基本信息。

{
"name": "jake/dev-package", # 包名,格式为 vendor/package-name vendor用于避免冲突
"description": "软件包描述",
"autoload": { # 自动载入规范
"psr-4": {
"Jake\Package\": "src"
}
}
}

配置好之后就可以在src 目录编写项目逻辑,这里我们声明了自动载入符合*psr-4*规范。

本地引用软件包

在为上传到仓库之前,我们可以使用本地路径来引入

复制代码
{
    "name": "jake/application",

    ...

    "repositories": {
      "dev-package": {
        "type": "path",
        "url": "relative/or/absolute/path/to/my/dev-package",
        "options": {
          "symlink": true
        }
      }
    }
}

配置中的*"type": "path"* 表示引入的是一个本地仓库,url定义了包的路径,路径可以使用相对路径或绝对路径。

虽然设置了type和url后就可以开发了,但是composer会复制包的代码到vendor目录,而且每次包发生变更都要执行composer update

为了避免更新执行update操作,可以通过设置"symlink": true参数让composer创建一个软链接到包所在目录

最后一步操作就是使用composer require命令来引入软件包。

复制代码
composer require jake/dev-package @dev

发布到公网

1、 发布到外网首先需要把代码提交到vcs服务器,并且设置为可公开访问。

2、 然后注册 packagist 帐号用于发布,用邮箱即可注册。

3、 登录packagist后可通过 submit 页面发布composer包,发布时需要填写可公开访问的vcs地址。如下图

点击Check跟着向导走即可完成发布。

提示

包名中的vendor不可与他人发布的重复。

使用

composer require "kyfjake/lumen-swoole:version"

版本号规则

  1. dev-branch-name表示使用某一个分支版本,对应vcs中的分支
  2. vxx.xx.xx 表示使用xx.xx.xx版本,对应git中的标签 vxx.xx.xx

版本号匹配规则见: 官方文档composer包版本命名及限定规则

相关链接

  1. PSR-4
  2. composer autoload
  3. packagist
  4. 阿里云 Composer 全量镜像

作者:合一研发部-郭建超

相关推荐
printfLILEI2 小时前
php中的类与对象以及反序列化
linux·开发语言·php
华科大胡子3 小时前
AI开发者的网络卡点:Anthropic连接超时
开发语言·php
bill32822780434 小时前
AE 的 Animation Composer 描边动效玩法 + 极简 MG 制作流程(含示例)
php·composer
csdn_aspnet7 小时前
PHP 算法 LeetCode 编号 70 - 爬楼梯
算法·leetcode·php
林熙蕾LXL8 小时前
socket编程-TCP开发常用函数
网络协议·tcp/ip·php
m0_738120728 小时前
渗透测试基础——黑盒测试下的Web漏洞挖掘与利用解析(一)
服务器·前端·网络·安全·php
catchadmin11 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.3.1 发布 后台打包直降 5s 内
开发语言·php
Leweslyh12 小时前
基于 Confucius 架构的无人集群网络控制原语解析
开发语言·网络·php
ylscode13 小时前
黑客利用 GHOSTYNETWORKS 和 OMEGATECH 托管 JS 恶意软件基础设施
开发语言·安全·php·安全威胁分析
.千余14 小时前
【Linux】 TCP进阶详解:字节流、粘包问题、异常情况与UDP完整对比2
linux·运维·c语言·开发语言·经验分享·笔记·php