一、背景
多个我的项目有雷同代码
二、创立
1、初始化一个裸仓 xxxx.git
2、git clone 到本地
3、在根目录下创立src目录,composer的一种格局标准,composer库的代码在该目录下开发
4、初始化composer配置,composer init
生成 composer.json
,交互式【一路回车】生成一些配置和属性,也能够复制别的出名第三方库composer.json
文件进行批改。最终如下,
{ "name": "galaxy/platform", "description": "xxxxxx库", "type": "library", "require": { "php":">=5.6" }, "license": "MIT", "autoload": { "psr-4": { "Galaxy\\": "src/" } }, "authors": [ { "name": "xxxxx", "email": "xxxxxx@qq.com" } ]}
其中比拟重要的是require
::库对环境的要求,以及领导不同的库的加载版本autoload
:主动加载配置,这里应用psr-4
标准,定义Galaxy作为跟命令空间,映射src目录
5、创立src/Traits/RpcTrait.php
其命名空间即为 Galaxy\Traits\RpcTrait
6、提交代码,推送版本
三、引入
1、在我的项目代码的composer.json
文件引入如下配置
"repositories": { "galaxy/platform": { "type": "git", "url": "xxxx.git" }},
其中galaxy/platform
是咱们自定义的包名,也是最初装置完的目录构造,vendor/galaxy/platform
执行composer update
即可,实质是调用git clone
或git pull
配置的公有库仓库地址,获取代码笼罩vendor/galaxy/platform
,所以这里是须要有克隆和拉取公有库代码的权限,如果
仓库是ssh协定,则须要先密钥受权
仓库是https或http协定,则须要登录凭证,也就是仓库托管平台的账号密码;如果是http还额定须要在composer.json减少配置【在config中减少"secure-http": false
】
留神:默认拉取是master分支的最新版本,这里能够指定分支以及版本。通过以上操作后,composer.json
会默认生成require
配置【"galaxy/platform": "dev-master"
】,其中key是包名,值是固定格局dev-
{{分支}}#{{版本hash或标签}},如果咱们指定了某个版本。就会拉取指定版本的公有库代码,如图
四、应用
像失常的库应用,如图
五、开发与迭代
1、没有第三方依赖的代码,能够间接编码,在公有库我的项目中进行开发测试,这里能够在src目下建Tests目录,写测试用例,或者创立Demo目录,写调用示例;
2、有第三方依赖的代码,目前我不晓得如何间接在公有库我的项目中进行开发,不过我想到一种办法,先在业务我的项目代码中对公有库进行开发,开发测试通过后,将代码笼罩公有库本人的仓库代码进行提交推送,而后在业务我的项目代码,执行composer update
六、疑难
1、有第三方依赖的公有库代码,是否有更好的开发方式?