@gabe
2016-06-03T10:21:16.000000Z
字数 1499
阅读 3097
php composer package library
关于composer如何安装使用,大家可以到phpcomposer查看文档,这里介绍下如何写个可以使用composer安装的php包
新建一个空目录mkdir libfoo,在libfoo目录下新建一个composer.js文件,内容如下
{"name": "gangbo/foo","description": "test description","authors": [{"name": "gangbo","email": "daigangbo@gmail.com"}],"autoload": {"psr-4": {"gangbo\\foo\\": "src/","gangbo\\foo\\test\\": "test/"}}}
name 代表这个package的名字,由vendorname/packagename组成。
autoload 里面定义namespace和文件目录的对应关系,可以多个。
在libfoo/src/目录下新建一个Hello.php
<?phpnamespace gangbo\foo;class Hello{public static function fn(){echo 'hello: ' . __METHOD__ . "\n";}}
在libfoo/test/目录下新建一个Unit.php
<?phpnamespace gangbo\foo\test;class Unit{public static function fn(){echo 'hello: ' . __METHOD__ . "\n";}}
提交代码到github,需要提前在github上建好仓库
git initgit add *git commit -m "init"git remote add origin git@github.com:gangbo/foo.gitgit pull origin master:mastergit push origin master:master
登陆到 packagist ,点击submit把我们的git地址https://packagist.org/packages/submit填写进去并提交。
这时其它开发者就可以使用comoser安装你的包了
执行composer require gangbo/foo:dev-master,
这里必须加上dev-master,因为如果不加的话会默认安装该包的稳定版,因为我们这里还没有发布稳定版本。
写个脚本测试下
// test.php//加载autoloadrequire __DIR__ . '/vendor/autoload.php';use gangbo\foo\Hello;use gangbo\foo\test\Unit;Hello::fn();Unit::fn();
执行php test.php 输出结果
hello: gangbo\foo\Hellohello: gangbo\foo\test\Unit::fn
说明调用成功。
修改composer.json文件,添加repositories属性。
{"repositories": [{"type": "path","url": "../../packages/my-package"}]}
修改完后我们就可以在本地执行composer require,composer会从本地文件中做个软连接到vendor目录下。
用这种方式可以非常方便的测试的你的package