我应该如何设计 PHP 中 SQL 列生成器的接口?

发布于 2024-07-12 04:32:32 字数 781 浏览 8 评论 0原文

我正在开发一个 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

我的设计约束如下:

  1. YAML 不能包含任何 SQL 语法
  2. 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:

  1. The YAML cannot contain any SQL syntax
  2. The PHP code must be as concise as possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小…楫夜泊 2024-07-19 04:32:32

我建议您创建一个 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.

爱格式化 2024-07-19 04:32:32

不完全相关,但您知道 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文