文档章节

如何发布一个自己的composer扩展

2688
 2688
发布于 2017/02/06 09:39
字数 758
阅读 36
收藏 0

简介

如何高效,高质量的开发, 特别是团队中,如果在项目中使用Composer构建代码的组件、类库、脚本、接口等一些基础设施,让开发人员只关注与业务实现。

大体步骤

  1. 在github上创建一个项目
  2. 安装composer后编写composer.json
  3. 发布代码到github
  4. packagist提交自己的包
  5. 设置github的hook

创建项目

  1. github 上创建项目
git clone git@github.com:zhu2688/framework.git
cd framework
  1. 编写composer.json
    composer 安装和基本使用 参考文章 Composer php包管理工具
    composer 有命令行帮助我们生成 composer.json 文件 ,也可以自己手动编辑 ,具体可以去composer官网阅读 相关文档获得帮助。
composer init
## 中间会填写一些信息,最终会显示下面的字符信息
Search for a package:
{
    "name": "zhu2688/framework",
    "description": "composer publish demo",
    "type": "library",
    "require": {
         "php": ">=5.6.0",
         "monolog/monolog": "^1.23",
    },
    "license": "MIT",
    "authors": [
        {
            "name": "zhu2688",
            "email": "zhu2688@gmail.com"
        }
    ],
    "minimum-stability": "stable"
}

简单说明 : 名字为zhu2688/framework
采用MIT协议发布
需要依赖于 php版本5.6以上 和monolog/monolog 的扩展

  1. 发布代码到github
git add.
git commit
git push

https://github.com/zhu2688/framework 已经有内容了

  1. 发布到 packagist
    packagist 注册一个账号,推荐使用github账号直接注册
    然后 右上角 submit 然后在文本框中输入你在github上创建的项目的git地址。packagist会自动检测是否合法。如果合法点击递交即可递交自己的包了。
    可以到 此链接 到底我提交的项目主页

  2. 设置hook 到github的 设置 选项的 ‘Integrations & services’
    右边选择增加 ‘Packagist’ 服务
    设置 Packagist 的username,token
    提交完成

添砖加瓦

  1. 编写代码
    上面的只是大体流程走了一遍,现在我们开始写自己的php代码
mkdir src
cd src 
touch HelloWorld.php

HelloWorld.php 代码如下:

<?php
namespace Soeasy\Demo
class HelloWorld
{
    public function __construct($name = 'Soeasy')
    {
        $this->name = $name;
    }
    public function hello()
    {
        return 'Hello '.$this->name.'!';
    }
}
?>

当然,要引入刚刚写的代码还需要修改 composer.json 文件,加入以下代码

    "autoload": {
        "psr-4": { "Soeasy\\Demo\\": "src" }
    },
  1. 测试安装
    提交代码之前,肯定需要测试和验证代码是否有问题了
composer install
mkdir example
cd example
touch test.php

test.php

<?php
require_once '../vendor/autoload.php';

$hello = new Soeasy\Demo\HelloWorld('My First test');
echo $hello->hello();

测试通过

3.发布使用

composer require zhu2688/framework

你会发现有下面提示,在github上没有发布stable版本

[root@centos test]# composer require zhu2688/framework
Do not run Composer as root/super user! See https://getcomposer.org/root for details
                                                                                                                                                     
  [InvalidArgumentException]                                                                                                                         
  Could not find package zhu2688/framework at any version for your minimum-stability (stable). Check the package spelling or your minimum-stability  
                                                                                                                                                     
require [--dev] [--prefer-source] [--prefer-dist] [--no-progress] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--] [<packages>]...
git tag -a 0.0.1  # 本地添加tag 标签
git push origin --tags  # 本地标签提交到github

然后其它人就可以使用了
命令行

composer require zhu2688/framework  ## 后面也可以指定具体某个分支

在 composer.json 中加入

"zhu2688/framework": "^0.0.2", ## 后面是版本号,具体参考composer用法

赶快去测试下吧

相关链接

© 著作权归作者所有

上一篇: 当当当当
下一篇: 111
2688

2688

粉丝 11
博文 56
码字总数 33491
作品 0
深圳
高级程序员
私信 提问
如何开发、本地测试、发布 Laravel 扩展包?

现在已经有了很多,关于如何开发 Laravel 扩展包的文章。但是大多文章写的太过片面,不够完整,而且我在实际进行开发扩展包的时候,还是遇到了很多的问题,我把自己的开发经验,以及遇到的问...

angkee
2018/01/10
0
0
教你如何写一个 Yii2 扩展

前言 把一系列相关联的功能使用模块开发,好处多多,维护起来很方便,模块还可以单独发布出去,让下一个项目之间使用,真是方便。 下面我就写一个开发扩展的简单教程。 Gii gii 自带帮助我们...

小田天
2016/11/17
241
0
探索PHP构造项目之路之停止复制粘贴

当系统有不同的web应用,但是需要共用很多代码怎么办 当系统需要一个扩展功能而这个扩展功能网上刚好有人提供了怎么用 PHP代码如何升级,降级,回滚 如何分配任务,如何让多个工程师一起进行...

周智超
2016/09/21
17
0
动手开发自己的第一个 composer 包

动手开发自己的第一个 composer 包 composer 是 PHP 的依赖管理工具,本篇文章就来说明如何构建一个包,并提交到 Packagist ,这样别人就可以方便地通过 composer 使用你的包了。 开发 comp...

蜗牛奔跑
2016/11/24
5
0
如何发布自己的 Composer 包

composer是php新时代的依赖管理利器,就像python的pip,nodejs的npm,javascript的bower等。你可以在自己的项目申明所依赖的外部库,composer可以帮你安装这些: composer解决如下问题 你有一...

胡椒大叔
03/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

NIO基于长度域的报文在Netty下的解码

1, 先复习一下粘包/拆包 1.1, 粘包/拆包的含义 TCP是个“流”协议, 并不了解上层业务数据的具体含义, 它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP...

老菜鸟0217
今天
8
0
从零开始搭建spring-cloud(2) ----ribbon

在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。 其实我们已经在上...

Vincent-Duan
今天
19
0
get和post的区别?

doGet:路径传参。效率高,安全性差(get的传送数据量有限制,不能大于2Kb) doPOST:实体传参。效率低,安全性好 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Pos...

花无谢
昨天
4
0
当谈论迭代器时,我谈些什么?

当谈论迭代器时,我谈些什么? 花下猫语:之前说过,我对于编程语言跟其它学科的融合非常感兴趣,但我还说漏了一点,就是我对于 Python 跟其它编程语言的对比学习,也很感兴趣。所以,我一直...

豌豆花下猫
昨天
14
0
10天学Python直接做项目,我做了这5件事

初学者如何尽快上手python? 市面上关于如何学python的资料很多,但是讲的都太复杂。 我就是很简单的几句话,从小白到开发工程师,我只做了五件事。 我觉得任何商业计划书如果不能用几句话讲...

Python派森
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部