一、使用 Composer 初始化项目
在项目根目录下使用下面的命令进行初始化:
$ composer init
这个命令会询问几个问题,以便在项目根目录下自动生成一个 composer.json
文件。关于 composer.json
文件的更多字段可以查看这篇文档来了解。
Package name (<vendor>/<name>)
:Composer 包的名称,也就是以后使用composer require
命令时填写的包名。通常的格式是创建者名/项目名称
,例如:practicemp/simple-mysql
。Description
:对这个项目的简单描述。Author [practicemp <example@mail.com>, n to skip]
:作者名name
及其邮箱地址email
。还可以直接修改后面生成的composer.json
文件,添加主页地址homepage
和 在项目中的角色role
。Minimum Stability
:最低稳定级别。指的是,如果项目依赖其它包,而依赖的包低于设置的这个最低稳定级别,就会被忽略。默认是stable
,另外还有dev
、alpha
、beta
、RC
。Package Type
:包的类型,默认为库library
。此外还有项目project
、空包metapackage
、Composer 插件composer-plugin
。License
:许可证类型,阮一峰的这篇文章对其有通俗易懂的解释。require
:必须依赖的软件包,除非这些依赖被满足,否则不会完成安装。如果没有输入no
。require-dev
:这个列表是为开发或测试等目的,额外列出的依赖。如果没有输入no
。“root 包”的 require-dev 默认是会被安装的。然而install
或update
支持使用--no-dev
参数来跳过require-dev
字段中列出的包。
然后会将上面所有输入的信息以 JSON 格式列出让你确认。输入 yes
表示确认无误后便会据此生成 composer.json
文件。最后还会询问是否要将 vendor
文件夹添加到 .gitignore
文件中。
接着打开生成的 composer.json
文件,补充非常重要的 autoload
字段。用来定义项目命名空间到路径的映射。例如:
{
"autoload": {
"psr-4": {
"Monolog\\": "src/",
"Vendor\\Namespace\\": ""
}
}
}
同时别忘了项目文件中也要定义命名空间。如果项目中使用了 PHP 自带的类,如 mysqli
,需要在类名前加反斜扛 \mysqli
,表示根命名空间。
二、将项目的标签推送到 GitHub
首先确认项目是否还有为提交的修改:
$ git status
如果有就先提交:
$ git add .
$ git commit -m "附注"
这时就可以给项目打标签了:
$ # 轻量级标签
$ git tag v1.0.0
$ # 或者含附注的标签
$ git tag -a v1.0.0 -m "附注"
如果要打含附注的标签而不用 -m
选项。会出现一个 VI 文本编辑界面,可以编辑一段较长的『描述』。如果使用轻量级标签,则附注为最近一次 commit
的附注。
接着将项目分支和标签推送到 GitHub:
$ git push -u origin master
$ git push origin v1.0.0
这两个命令不分先后,相互独立。上面的命令是将分支变化推送到 GitHub。下面的命令是将项目标签推送到 GitHub。两个命令互不影响。如果先推送标签,不推送分支的话,可以看到 releases
会增加一个标签,但 GitHub 上的文件并没有更新,。
可以用下面的命令管理标签:
$ # 查看项目所有标签
$ git tag
$ # 查看指定标签
$ git show v1.0.0
$ # 删除指定标签
$ git tag -d v1.0.0
$ # 删除远程库指定标签
$ git push roigin --delete tag v1.0.0
三、在 Packagist 上发布项目
登录 Packagist,点开右上角用户名左边的 Submit
标签页。输入 GitHub 上的项目地址(URL)。点击 Check
按钮,Packagist 会检查项目是否符合要求。如果符合要求,会出现一个 Summit
按钮。点击该按钮,项目就发布成功了!
四、设置 Packagist 自动更新
此时只是将项目的现有版本发布,如果想实现 Packagist 自动检测 GitHub 上的版本更新,还要接着设置。
首先获取 Packagist 的 API Token,打开个人信息页面上的 Profile 标签页。点击绿色的按钮 Your API Token
,右边就会出现 API Token。
然后打开 GitHub 的项目页面,依次点击 Settings
标签页 -> 左边栏 Webhooks
-> 右上角 Add webhook
按钮。然后填写下面 4 项:
Payload URL
:https://packagist.org/api/github?username=用户名
,这里的用户名是你在 Packagist 上注册的用户名。Content type
:选择application/json
。Secret
:粘贴前面在 Packagist 上获取的 API Token。Which events would you like to trigger this webhook?
:选择 Just thepush
event.
点击最下面的 Add webhook
提交。此时,每次 GitHub 上项目发布了新版本,Packagist 就会自动更新。
至此,你的 Composer 包的发布已经完成。
五、使用
如果 Composer 包是一个库:
$ # 加载库
$ composer require practicemp/simple-mysql
$ # 更新版本
$ composer update practicemp/simple-mysql
如果要在脚本中使用该库,只需要在脚本中引入 composer 的 autoload.php
文件。就可以使用包中命名空间了:
<?php
require_once __DIR__.'/vendor/autoload.php';
use PracticeMP\DB\SimpleMysql;
$sm = SimpleMysql::getInstance('0.0.0.0', 'root', 'mysecret', 'test', 3306, 'utf8');