前提条件:环境已安装了composer
一、创建一个空的目录。
二、创建composer包
进入命令窗口,切换到刚新创建的目录位置,运行以下命令,初始化composer包
composer init
命令窗口返回提示;
This command will guide you through creating your composer.json config.`
Package name (<vendor>/<name>) :
这里写包的名称,我写的是cjc/test,回车
输入描述
Description []:
随便填,“This is my first composer package”
输入作者
Author [tomorrow <943891935@qq.com>, n to skip]:
如果有默认值,直接回车
输入最低稳定版本
Minimum Stability []:
该选项有可选值:stable, RC, beta, alpha, dev 一般填dev
输入包类型
Package Type (e.g. library, project, metapackage, composer-plugin) []: 1
可选项在提示中已经有了,我们一般选library,填 l 即可
输入开源协议
License []:
这里我填 Apache-2.0 , 记得带上版本号,只填Apache后续会有问题,其它开源协议 点击参考
设置包需要依赖的其他环境或者包
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]?
如过需要,则yes 回车。例设置php版本
Search for a package:
填写 php
Enter the version constraint to require (or leave blank to use the latest version):
填写 >=5.6.0
设置完成后,会继续返回搜索包
Search for a package:
不需要再设置其它依赖或包,则直接回车
Would you like to define your dev dependencies (require-dev) interactively [yes]?
直接回车
{
"name": "cjc/test",
"description": "This is my first composer package",
"type": "l",
"require": {
"php": ">=5.6.0"
},
"license": "Apache-2.0",
"authors": [
{
"name": "tomorrow",
"email": "943891935@qq.com"
}
],
"minimum-stability": "dev"
}
Do you confirm generation [yes]?
确认信息,直接yes 回车
Would you like to install dependencies now [yes]? yes
安装完成,可以看到我们的目录生成了如下结构。
vendor是composer存放包的地址,所有的包都存放在该路径中统一管理。
并且composer提供了命名空间自动加载的功能,我们在使用过程中只需要引入composer的统一入口文件即可
编辑composer.json文件
{
"name": "tomorrow-sky/test",
"description": "This is cjc's first composer package.",
"type": "1",
"require": {
"php": ">=5.6.0"
},
"license": "Apache-2.0",
"authors": [
{
"name": "tomorrow-sky",
"email": "943891935@qq.com"
}
],
"minimum-stability": "dev",
"autoload": {
"psr-4": {
"Cjc\\": "src/cjc"
}
}
}
记得 psr-r 里面, “Cjc\” 有两个斜杠,不要去掉
【 这一步不要漏了哦 】
这里的路径需要根据你自己的来定,也可以参考以上写法即可。
写完之后需要运行一下命令行composer dump-autoload更新composer的命名空间与文件夹映射关系。
创建文件夹及功能
在根目录(与composer.json 文件同级).
创建src目录,再 src 里面 创建cjc目录,再 cjc 里面创建Test.php文件。
命名空间,既是composer.json里面写的
<?php
//Test.php文件
namespace Cjc;
class Test
{
function test()
{
echo "This is my first composer package";
}
}
创建demo调用
在根目录,创建demo文件夹,并在里面创建index.php文件,编辑文件
<?php
require "../vendor/autoload.php";
$Test = new Cjc\Test();
$Test->test(); // echo "This is my first composer package"
可以根据你自己的想法来写类,只需要注意命名空间的层级与文件夹层级相同,类名与文件名相同即可自动加载。
三、上传composer包
1、首先在github上创建仓库
2、将本地的composer包,发送到新创建的github仓库上面
在本地 Git Bash 命令窗口输入以下命令:
echo "# cjc_first_conposer" >> REMADE.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/tomorrow-sky/cjc_composer_package1.git
git push -u origin master
四、关联composer仓库
composer的官方仓库是 https://packagist.org/
我们打开,并且注册一个账号。然后点击右上角的submit。把地址填写进去,点击Check按钮
如果成功,则会变成Submit按钮,点击后即可关联。
五、发布新版本(打标签)
到这里,我们的github仓库与packagist已经建立了关联,但是这个使用还是用不了的,因为我们还没有发布正式版本!
需要在git上打标签,才认为我们发布了一个新的版本,packagist才会去拉取并且提供给别人安装。
git打标签需要运行以下命令
git tag -a v1.0.1 -m "first version"
git push origin v1.0.1
然后更新以下composer官方仓库包
六、完成、在项目中引入
到此,我们的composer包,已经创建完成。
在项目中,使用
composer require xxx/xxx
即可引入我们自己的包了。
本文章出处:https://blog.youkuaiyun.com/chen_start02/article/details/103219858