PHP创建自己的composer
composer是如何安装的:
1、composer命令安装项目包A,下载A到本地
2、自动执行A中composer.json,发现里面的require:{B} 并下载B
3、如果B的composer.json中require还有值,则继续下载
怎么让自己的项目,用composer一键安装:
composer和git类似,可以本地安装和远程安装
本地用composer init 和composer install
远程需要注册https://packagist.org/
下面介绍远程的方式
composer远程
本文介绍项目****分成2个包,项目包A,类库包B
A是TP框架,B是自己封装的类
在发布项目之前需要在https://github.com/上与https://packagist.org/上分别申请一个账号,github主要存储我们开发好的项目资源,packagist上发布的为composer项目。
申请好账号后,先在github上建立一个项目:
将下面的信息填写完整
image.png同时创建好两个这样的项目,一个存放项目A,一个存储类库B。
类库包
需要注意的是autoload,psr-4里面有个 "ruhua\": "src/",这里的意思是插件的命名空间需要前面有个ruhua,并且路径在src文件夹中,才能进行访问:
结构****如下:
QQ截图20200728164146.png
conposer.json如下:
{
"name": "qy/ruhua-engine",
"description": "ruhua-engine",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "xxf",
"email": "2421912566@qq.com"
}
],
"minimum-stability": "dev",
"require": {},
"autoload": {
"psr-4": {
"ruhua\\": "src/"
}
}
}
image.png
在src的所有文件在namespace的前面需要加上ruhua,插件下载后,我们便可以在控制器中调用。
下一步将开发好的插件上传到git上,从cms进入插件目录
点击https://packagist.org/上的Submit
image.png从git 上找到地址并复制
image.png将地址放在输入框里面,并点击确认,检测完没问题后再点击以下,插件就发布完毕。
image.png项目包
将插件需要的配置文件配置好,并在composer.json加入刚发布插件的名称和版本号,再按照以上步骤上传到另一个项目中,等待几分钟后下载即可。
结构****如下:
QQ截图20200728164131.png
conposer.json如下:
QQ截图20200728162842.png如何下载?
首页有个搜索框,我们搜索以及上传的composer项目:
image.png image.png点击项目进入会有一个下载的命令,复制后再终端下载即可。
composer create-project qy/ruhua
composer 设置镜像地址
当我们在发布包后,如果获取不到报错怎么办,有可能是镜像的问题
//查看全局设置
composer config -gl
//第一种:设置国内镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
//第二种:设置国内镜像
composer config -g repo.packagist composer https://packagist.laravel-china.org
//第三种:设置国内镜像
composer config -g repos.packagist composer https://php.cnpkg.org
报错 InvalidArgumentException
Could not find package ruhua/api with stability stable
当你右侧只有dev-master版本时,安装需要****加上指定版本号
QQ截图20200902111131.pngcomposer create-project ruhua/api:dev-master
如何添加 packagist 库的版本
其实对应的是git tags的版本
git commit -m'xxx'
git tag v1.0
git push origin v1.0
更新packagist 库,此时右侧就有1.0版本了,在执行即可安装(如果失败等几分钟)
composer create-project ruhua/api
composer.json中的~与^区别
~表示版本号只能改变最末尾那段(如果是 ~x.y 末尾就是 y,如果是 ~x.y.z 末尾就是 z)
~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0
~1.2 代表 1.2 <= 版本号 <2.0
^表示除了大版本号以外,小版本号和补丁版本号都可以变
^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0