devco / trek
Trek是一个简单的迁移和版本管理库。它抽象了版本跟踪和版本间的迁移,使您能够专注于基于简单界面的清洁迁移脚本的编写。
该软件包的规范仓库似乎已不存在,因此该软件包已被冻结。
Requires
- php: >=5.4.0
Requires (Dev)
- devco/event-emitter: 1.0.*-dev
- devco/testes: 1.1.*-dev
- symfony/finder: 2.8.20
README
Trek是一个简单的迁移和版本管理库。它抽象了版本跟踪和版本间的迁移,使您能够专注于基于简单界面的清洁迁移脚本的编写。
目录结构
Trek假设一个传统的目录结构
<namespace>/<major>.<minor>.<patch>/<number>_<classname>.php
<namespace>
默认设置为Migration
,但您可以根据需要将其更改为任何有效的命名空间。
<major>.<minor>.<patch>
为了将版本目录映射到迁移类命名空间的一部分,它被转换为每个数字都映射到其英文单词,每个句点被替换为命名空间分隔符。
版本还支持使用预发布版本和预发布版本号。
- 1.0.0-alpha
- 1.0.0-alpha.1
- 1.0.0-beta
- 1.0.0-beta.1
- 1.0.0-rc.1
...等等。
<number>
文件名中的数字部分允许您简单地定义迁移脚本的执行顺序。在解析过程中会从实际类名中移除。
<classname>
文件名中的这部分直接映射到解析命名空间内的类名。
编写迁移
以下是对Migration/1.0.10/1_AddUserTable.php
的迁移
<?php
namespace Migration\One\Zero\OneZero;
use Trek\MigrationInterface;
class AddUserTable implements MigrationInterface
{
public function up()
{
// upgrade code here...
}
public function down()
{
// downgrade code here...
}
}
您可以根据自己的喜好在方法中编写代码;没有依赖项,您可以使用任何库。
迁移
迁移是通过使用Trek\Migrator
类完成的。
<?php
use Trek\Migrator;
$migrator = new Migrator('path/to/migrations', 'Migration\Namespace');
迁移器需要您传递一个目录来加载迁移,以及一个可选的、首选的命名空间来代替默认命名空间。
在任意版本之间移动相当简单。如果您想更新到最新版本,无论您目前处于哪个版本
$migrator->up();
如果您想移动到特定版本
$migrator->to('1.0.0');
如果您想因为错误而回滚
try {
$migrator->up();
} catch (\Exception $e) {
$migrator->rollback();
}
如果在回滚过程中出现错误,您需要手动处理这些错误。
运行测试
要从工作副本根目录运行测试
php bin/tests.php
许可证
版权所有(c)2013 Ultra Serve Internet Pty Ltd
在此特此授予任何获取此软件及其相关文档文件(“软件”)副本的任何人,免费使用该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供方提供软件的人这样做,但受以下条件的约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的还是与商业性、特定目的适用性及非侵权性相关的保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因,以及与软件或软件的使用或其他交易有关的索赔。