有时由于公司需要或接收别人的项目,只能用公司的框架。有些公司自己开发的框架功能并不是那么齐全。可能熟悉了Laravel、TP的你,用起来感觉很难受。下面几篇文章,我会介绍一下为简单PHP框架集成好用的功能,帮你更顺畅的开发。
- 给PHP框架全副武装——数据迁移
- 给PHP框架全副武装——命令行工具
- 给PHP框架全副武装——任务调度
- ……
这篇文章先来介绍一下数据迁移功能。如果你还在手动修改数据库,我建议你看一下这篇文章。
数据库的修改,也应该像代码一样纳入版本控制,升级代码后,使用命令自动修改数据库。
我们可以使用 phinx
来实现上述功能。
安装
利用 composer 引入 phinx
。
composer require robmorgan/phinx
在项目目录下创建 db/migrations
目录,并赋予可写权限。
mkdir -p db/migrations
初始化,会在项目目录下生成 phinx.yml
文件
vendor/bin/phinx init
接下来就可以使用了
数据迁移
简单介绍数据迁移的用法。以 Users 表的创建为例
使用命令创建迁移文件
php vendor/bin/phinx create create_users_table
上述命令会在 db/migrations
目录下生成 {timestramp}_create_users_table.php
文件。打开文件,编写代码。
<?php
use Phinx\Migration\AbstractMigration;
class CreateUserTable extends AbstractMigration
{
public function up()
{
$table = $this->table('user');
$table->addColumn('username', 'string', array('limit' => 30))
->addColumn('password', 'string', array('limit' => 100))
->addColumn('create_at', 'integer', array('default' => true))
->addColumn('login_at', 'integer', array('default' => true))
->create();
}
public function down()
{
$this->dropTable('users');
}
}
up() 实现了创建 users 表和设置字段等操作, dwon() 是在执行回滚时进行的操作,这里我们实现了删除 users 表操作。如果觉得两个方法写起来太麻烦,可以将 up() 方法改为 change() 方法,change() 方法能根据 up 逻辑自动识别 down 逻辑。
<?php
use Phinx\Migration\AbstractMigration;
class CreateUserTable extends AbstractMigration
{
public function change()
{
$table = $this->table('user');
$table->addColumn('username', 'string', array('limit' => 30))
->addColumn('password', 'string', array('limit' => 100))
->addColumn('create_at', 'integer', array('default' => true))
->addColumn('login_at', 'integer', array('default' => true))
->create();
}
}
执行迁移命令,你会发现数据库中生成了 users 表。
vendor/bin/phinx migrate
执行单步回滚,数据库刚刚生成的 users 表已被删除。
vendor/bin/phinx rollback
数据填充
开发阶段,可以使用 phinx
的数据填充功能,并借助 fzaninotto/faker
包,实现假数据填充,以此来辅助开发。
关于 phinx
更详细的用法可以阅读文档。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。