有时由于公司需要或接收别人的项目,只能用公司的框架。有些公司自己开发的框架功能并不是那么齐全。可能熟悉了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 更详细的用法可以阅读文档。

https://tsy12321.gitbooks.io/...


Mr_houzi
964 声望22 粉丝