Question

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.
Was it helpful?

Solution

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top