飞嗨,欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。(本博已于2015.12.6升级到php7,运行环境php7 php-fpm + nginx1.8.0)

编写和提交composer包到packagelist

PHP lf 3411℃ 0评论

python有pip,node.js有npm包管理工具。php在composer出现之前,有个官方的pear,好吧,虽然我很早就知道pecl和pear,但我从来没用过pear…直到非官方的composer出现,php的包管理工具也流弊哄哄啦,composer包依赖管理真心太好用了,现在众多的sdk、插件、框架,官方都置composer安装为recommend。今天是2015年最后一天了,也做了小两年php啦,也来共享一下自己的积累。

        本例程github地址:http://www.github.com/liufee/php,composer包搜索feehi/standard安装。目前只分享了一个http request类,慢慢会把自己常用的工具全放上去,composer安装遇到任何问题欢迎联系QQ:1838889850和email:admin@feehi.com

        composer自动导入类,有他自己的一套导入规则(vendor/composer目录下的源码,读里面的源码才能更好的理解composer的自动导入机制)。composer分别有较老的psr-0和最新的psr-4自动导入标准。这次,我们先使用psr-0的标准,其实psr-4跟psr-0差不多,只是psr-4更精简了目录结构以及对下划线的处理方式不同而已。

首先要有一个github/bitbucket账号,然后编写composer.json文件,告诉composer应该要怎么处理这个包,当然这个composer.json的文章大大的有,肯定必须读官方的文档>>官方说明,如:

{
    "name": "feehi/standard",
    "type": "library",
    "description": "A library provided by wfee",
    "keywords": ["feehi","library","liufee"],
    "homepage": "http://blog.feehi.com",
    "license": "MIT",
    "authors": [
        {
            "name": "liufee",
            "email": "job@feehi.com",
            "homepage": "http://blog.feehi.com",
            "role": "Developer"        
        }
    ],
    "require:": {
        "php": ">=5.4"
    },
    "autoload": {
        "psr-0": {
            "Feehi": "src/"
        }
    }
}

name为vendor name/package name,require指明此包依赖于哪些别的包,autoload指定使用自动加载的标准是psr-0还是psr-4。这里详细一定要读文档。

然后,git push代码到github。打几个tag,composer会认为包更稳健,下图就有2个release

github php

github php

        然后去packagelist.org注册一个账号,并向composer submit这个包

submit package

submit package

feehi/standard

feehi/standard

好啦,就阔以啦。成功!需要注意的是,composoer.json配置了composer对此包是如何处理的,所以一定要搞明白,其次,写的php代码命名空间要写对,要适应psr-0或者psr-4的自动导入标准,不然会造成composer自动require的时候找不到文件的正确位置。读读vendor/composer下的加载源码,以及读读psr-0和psr-4自动加载的文档是非常有必要的。当然,现在往github上push代码时,需要到pakagelist.org点击update手动更新,github已经提供了钩子,只要设置就可在每次push代码时自动update,点击github仓库中settings按钮,然后点击Webhooks & Services,然后点击add service选中packagist,填入相应配置。这样,每当往github上push代码就能自动update到packagist啦

packagistpackagist[/caption]

composer feehi/standard

 composer feehi/standard


        现在,我们就可以通过composer来自动安装feehi/standard这个库啦。编写composer.json,这个composer.json是配置要安装什么包,跟提交包到composer不是一回事。比如:

 "require": {
            "feehi/standard" : "*"
        }

指定要安装的宝明,*代表的版本号。当然,我们处在一个神奇的国度,真心想不明白composer哪里就危害郭嘉了!!!只有配置一下镜像,让composer去国内的镜像(这个好坑,明明在pakagelist更新了,但是国内镜像并非实时的,有缓存,,,哎)如:

{
        "require": {
            "feehi/standard" : "*"
        },
        "repositories": [
            {"type": "composer", "url": "http://packagist.phpcomposer.com"},
            {"packagist": false}
        ]
   }

然后运行composer update就能看到composer帮我们自动安装以及解决依赖和自动导入这个库了

composer install

composer install

这里面已经带了一个测试文件了,让然我们也可以自己手写一个测试文件:

  <?php
  require "vendor/autoload.php";

  use Feehi\Http;

  $http = new Http();
  $res = $http->get("http://blog.feehi.com");
  $res = $http->post("http://blog.feehi.com", ['username'=>'xxx','password'=>'yyy']);
  var_dump($res);

result

result

转载请注明:飞嗨 » 编写和提交composer包到packagelist

喜欢 (3)or分享 (0)
发表我的评论
取消评论

表情
(2)个小伙伴在吐槽
  1. 99
    匿名2017-08-15 11:29 回复
    • 感谢光临飞嗨博客
      lf2017-08-18 00:12 回复
粤ICP备15018643号-1