- 在上一篇文章中写了composer拓展包的开发,但是在实际情况中我们的仓库的代码是变动的,我们希望提交的拓展包也能同步更新
拓展包的更新同步
在composer
中我们提交了仓库地址,加入了composer
的仓库,但是当我们更新了代码,composer
仓库是不会同步更新,这个时候我们需要设置composer
仓库的钩子,自动检测github
仓库的更新,即使用github
进行授权,这里我已经授权,这样我们的composer
也进行了同步
- 检测一下我们在拓展包中新增
sub
方法
<?php
namespace Math;
class Math
{
//两数相加
public function sum($a, $b)
{
return $a + $b;
}
//两数相减
public function sub($a, $b)
{
return $a - $b;
}
}
- 在使用的项目中更新
composer
包
composr update
- 我们已经可以正常使用新增的功能
<?php
require './vendor/autoload.php';
use Math\Math;
class Test{
function one(){
$math = new Math();
echo $math->sub(10,20);
}
}
$obj = new Test();
$obj->one();//-10
拓展包的版本控制
在项目中我们是基于某个时间引入的拓展包,我们在此状态下的拓展包进行了我们的项目开发,如果拓展包进行了更新,会对我们的项目造成很大的影响。
在这种情况下,我们就得对拓展包进行版本控制,设置一个个的固定的历史版本不再变动
在composer拓展包的开发中开发完成的包,我们只能
composer require superkingm/math dev-master
每次都是拉取最新的拓展包,在正常的情况下,我们一般都是引入版本包,而不是dev-master
,只要我们上面我们进行了github
的授权产生钩子,我们在github
的仓库打上tag
就可以自动产生版本
- 例如在
v2.0
版本中加入乘法和除法计算,同步并打上本版本的tag
-
在composer仓库中我们已经看到更新出了v2.0版本
我们修改项目中的composer.json
中修改为"superkingm/math": "v2.0"
,修改composer.lock
中修改为"version": "v2.0"
更新拓展包
composer update
简单的使用下乘除方法,这里我们已经成功使用上2.0版本的包
<?php
require './vendor/autoload.php';
use Math\Math;
class Test{
function one(){
$math = new Math();
echo $math->mult(10,20)."<br>";
echo $math->div(20,10)."<br>";
}
}
$obj = new Test();
$obj->one();//200 2
到此我们composer
包的自动更新与版本控制也已经完成