我应该如何设计 PHP 中 SQL 列生成器的接口?
我正在开发一个 PHP 框架,该框架工作的一部分是编写 SQL 代码来生成新的 MySQL 列。
为列传递一堆参数然后将其转换为 SQL 代码的最优雅的方法是什么? 作为示例,这里有一些 YAML,它指定创建 varchar 列的参数:
- type: character
data-type:
type: varchar
length: 255
decimals: null
unsigned: null
zerofill: null
collate: utf8_unicode_ci
character-set: utf8
binary: false
spatial-type: null
values: null
nullify: true
default: null
increment: false
unique: false
primary: false
comment: This is a small general text field.
format: default
storage: default
我的设计约束如下:
- YAML 不能包含任何 SQL 语法
- PHP 代码必须尽可能简洁。
I'm working on a framework in PHP, part of this frameworks job is to write SQL code to generate new MySQL columns.
What is the most elegant way to pass in a bunch of parameters for a column and then turn that into SQL code? As an example here is some YAML I have, that specifies parameters for creating a varchar column:
- type: character
data-type:
type: varchar
length: 255
decimals: null
unsigned: null
zerofill: null
collate: utf8_unicode_ci
character-set: utf8
binary: false
spatial-type: null
values: null
nullify: true
default: null
increment: false
unique: false
primary: false
comment: This is a small general text field.
format: default
storage: default
My design constraints are as follows:
- The YAML cannot contain any SQL syntax
- The PHP code must be as concise as possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我建议您创建一个 Column 类,它采用一个数组作为构造函数参数,该数组可以定义您想要的各种配置点。 那些在每个特定情况下都不重要的内容,您只是没有定义。
I recommend you make a class Column that takes, as a constructor argument, an array that can define the various configuration points you want. The ones that don't matter in each particular case you just don't define.
不完全相关,但您知道 Propel 项目吗?
他们使用 xml 来解释模型,但 symfony 项目(使用 propel 作为插件)使用 yaml。
Not totaly related but do you know the Propel project ?
They use xml to explain model but the symfony project (which use propel as a plugin) use yaml.