Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中运行应用程序迁移的模式_Php_Design Patterns_Migration_Database Migration - Fatal编程技术网

在php中运行应用程序迁移的模式

在php中运行应用程序迁移的模式,php,design-patterns,migration,database-migration,Php,Design Patterns,Migration,Database Migration,我正在为一个应用程序创建一个迁移系统。迁移通常只与数据库相关,它有两个组件:模式迁移和数据迁移。我的文件结构如下: 我要做的是检查用户安装的版本,然后启动从该版本到最新版本的迁移过程。过程是,我执行一个sql脚本,然后查找要执行的相应php文件(如果存在)。我的问题是,如何构造php文件以避免运行重复的函数或重复的函数。我想要php迁移的标准命名;大概是这样的: Class Migrate { public function up() { // upgrade the

我正在为一个应用程序创建一个迁移系统。迁移通常只与数据库相关,它有两个组件:模式迁移和数据迁移。我的文件结构如下:

我要做的是检查用户安装的版本,然后启动从该版本到最新版本的迁移过程。过程是,我执行一个sql脚本,然后查找要执行的相应php文件(如果存在)。我的问题是,如何构造php文件以避免运行重复的函数或重复的函数。我想要php迁移的标准命名;大概是这样的:

Class Migrate {
    public function up() {
        // upgrade the data
    }

    public function down() {
        // downgrade the data
    }
}
我遇到的问题是,这些php文件中的每一个都有这个类和函数,当我从一个循环中运行所有这些时,php会抱怨重新定义类


我如何解决这个问题?有没有更好的方法,或者通用的方法?

为什么不存储一堆差异?只需按顺序应用所需的差异,就可以修补8.0.0->8.0.1->8.0.2->8.1.0,而不必执行任何代码?我该怎么做?此外,php文件的功能还涉及数据库数据操作和文件操作(我认为这不能用diff实现)