dbff / dbff-core
dev-master
2014-03-27 20:42 UTC
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-09-28 15:00:22 UTC
README
Dbff
Dbff (db和diff的混合,发音为dibiff) — 比较数据库结构的工具。目前仅适用于MySQL。
Dbff可以比较
- 数据库
- 表
- 列
- 索引
- 数据类型
显然,它不涵盖MySQL结构的100%。我们只支持到目前为止需要的部分。但你可以改进这个库,欢迎你的贡献 ;)
Dbff结构
Dbff由几个解耦的部分组成
- 元素 — 你可以创建它,用任何值填充它,并比较
- 解析器 — 将从'show create'语句中获取的元素的字符串表示转换为命名值数组。你可以使用这些值来自定义,例如初始化元素或制作自己的差异
- 构建器 — 从字符串直接创建元素的辅助工具。它将解析器和其它构建器作为依赖项,并使用它们来构建元素
- dbffer — dbff工具本身。它接受两个元素,并以数组形式生成一些差异
元素
共有6个元素
- typeprop — 某种类型的属性组
- 类型
- 索引
- 列
- 表
- 数据库
解析器
我们为每个元素都有一个解析器
- 类型解析器(用于类型和typeprop) — 从列中解析类型定义
- 索引解析器 — 从"create table"语句中解析索引定义
- 列解析器 — 从"create table"语句中解析列定义
- 表解析器 — 解析整个"create table"语句
- 数据库解析器 — 解析"create database"语句
解析器返回结构体 — 具有特定键的数组。查看架构以了解结构体键。
所有解析器都有parse方法。
构建器
解析器返回结构体,因此可以用来填充元素。手动这样做很无聊。因此构建器为您完成这项工作。它们可以直接从字符串创建元素。
我们为每个元素都有一个构建器
- 类型构建器
- 索引构建器
- 列构建器
- 表构建器
- 数据库构建器
所有构建器都有createFromString方法。
复杂的构建器有很多依赖项,因此为了更容易地创建默认构建器,请使用DefaultBuilderFactory。
Dbffer
Dbffer可以使用compareElements方法比较元素,使用compareCollections方法比较集合。
依赖项
此包没有依赖项。其组件是解耦的。你可以只使用解析器,或者你可以手动填充元素,或者你可以添加自己的元素,或者你可以实现自己的解析器,同时仍然使用Dbff。
示例
文档正在开发中。请参阅此包中提供的example.php文件。
TODO
- 文档和更多示例
- dbff-core — 此包,主要功能
- dbff-altr — 从dbff输出构建alter语句的工具
- dbff-ignr — 忽略器工具,用于在dbff输出中忽略某些模式的部分(例如,你不想比较字符集)
- dbff-drvr — 用于从提供的数据库连接直接创建dbff的工具
- dbff-humn — 将dbffer的输出人性化(而不是难以理解的数组)
- dbff-dbff — dbff对象而不是数组
- dbff-full — 所有dbff子包的构建,功能强大 :)