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 全量镜像

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

相关推荐
专业程序开发源3 小时前
springboot旅游推荐系统82074-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·php·课程设计·旅游
sbjdhjd4 小时前
从“删除后重生”到认证绕过:PHP 常驻内存实验与 Cacti remote_agent 命令执行链路复盘
安全·web安全·网络安全·数据挖掘·php·网络攻击模型·安全架构
JaguarJack6 小时前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php·服务端
BingoGo6 小时前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php
catchadmin20 小时前
Whim 是什么?一门把 PHP 被否决的设想真跑起来的实验语言
php
ID346107442021 小时前
【课程设计】基于Spring Boot+Vue的游戏账号租赁系统的设计与实现-计算机毕设 附源码50345
javascript·vue.js·spring boot·python·node.js·php·课程设计
PHP实战开发录1 天前
PHP接口偶发变慢怎么查
前端·php·开发
damoluomu1 天前
部署与运维:选完怎么把站跑起来?(番外六)
php
aixingpan1 天前
aixingpan.cn API开发文档:api_docs_bichart_natalvstertiary2接口指南
前端·php
辛迪聊物业数字化2 天前
智慧社区物业管理软件新手部署与实操指南
大数据·php