博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
composer之创建自己的包
阅读量:6329 次
发布时间:2019-06-22

本文共 1595 字,大约阅读时间需要 5 分钟。

hot3.png

composer的出现,使得PHPer可以像java一样更加方便的管理代码。在composer没有出现之前,人们大多使用pear、pecl管理依赖,但是局限性很多,也很少有人用(接触的大多phper基本不适用pear管理依赖)。composer不仅仅能够解决依赖的问题,也可以在一定程度上解决造轮子的问题。

废话不多说,这篇主要记录如何创建自己的package。

大概步骤如下:

  1.  在github上创建一个项目(项目名称可以随意)
  2.  编写composer.json
  3.  copy代码文件并修改命名空间
  4.  在上递交自己的包
  5.  设置github的hook

编写composer.json

先看一个示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

{

    "name""jenner/message_queue",

    "description""php message queue wrapper",

    "license""MIT",

    "keywords": ["message queue"],

    "version""1.0.0",

    "authors": [

        {

            "name""Jenner",

            "email""hypxm@qq.com"

        }

    ],

    "require": {

        "php"">=5.3.0"

    },

 

    "autoload": {

        "psr-0": {

            "Jenner\\Zebra\\MessageQueue""src/"

        }

    }

}

需要注意的几个字段说明如下:

name:包名称,递交时packagist会检测报名字是否合法。必须是一个/分隔的字符串。当别人引入你的包时,vendor下会自动创建这个目录。例如org/package包,则会在vender下创建org/package目录。

autoload:包的加载方式,具体加载方式可以参考说明。这里使用的是psr-0标准加载方式。composer会在src目录下根据命名空间执行自动加载。

 

copy代码修改命名空间

composer.json文件修改后,我们需要把要打包的源文件复制过来。这里我把所有的文件放在了src目录下,后面可能会有和src同级的tests等目录,而这些目录是不会被加载的。src目录下需遵循psr-0标准。命名空间和目录定义要一直。例如Namespcae/SubNamespace命名空间,则src下必须有Namespace/SubNamespace目录。

代码编写标准可以参考psr-0、psr-1标准

 

递交自己的包

pacagist开放递交,你可以任意递交自己的包,当然,要符合一定规则。

packagist右上角有一个submit package的按钮,点击会跳转到递交页面,如下图:

然后在文本框中输入你在github上创建的项目的git地址。packagist会自动检测是否合法。如果合法点击递交即可递交自己的包了。

你可能需要在github上面发布几个release,这样packagist才会认定你的包是稳定的,否则只能required开发包。

设置github的hook

版本控制工具大多支持hook,用于代码递交时触发一个事件,将代码同步到其他环境中。在github上设置hook后,我们每次pull,都会自动同步到packagist上,这样就不需要我们手动强制同步了。具体操作可以参见packgist的说明,操作很简单,耐心看下应该问题不大。

 

最后,如果别人使用了这个包。他的vendor目录下就会产生jenner/message_queue目录,其下的内容就是你github上的代码了,结构是完全一致的。

转载于:https://my.oschina.net/yonghan/blog/793395

你可能感兴趣的文章
对讲机的那点事:带你玩转LD800数字车载台读、写频操作:一
查看>>
centos系统下安装Nginx
查看>>
2018-10-23
查看>>
推荐一个 mac 下 webp 图片查看工具
查看>>
关于敏捷开发
查看>>
Confluence 6 配置管理员会话安全的备注
查看>>
Chrome web 开发用到的插件
查看>>
git 提交跳过检查
查看>>
JavaScript正则表达式(2)
查看>>
python爬虫之微打赏(scrapy版)
查看>>
http statusCode(状态码) 200、300、400、500序列
查看>>
自制操作系统Antz day08——实现内核 (中) 扩展内核
查看>>
复习es6-let和const
查看>>
poj-1056-IMMEDIATE DECODABILITY(字典)
查看>>
撩人情诗绝句(一)
查看>>
jvm误区--动态对象年龄判定
查看>>
Confluence 6 重构 ancestor 表
查看>>
【呆鸟译Py】20个数据分析前必须搞清楚的问题
查看>>
Windchill的web中的Spring
查看>>
BeautifulSoup4.4 python 2.7 抓包 qq news(代码目前没有跑起来???)
查看>>