如何将DB中的枚举与PHP代码同步?

时间:2010-11-08 14:11:48

标签: php mysql enums build constants

具有数百个表的数据库通常会在其中定义更少的枚举/集合 如何将PHP代码与枚举值同步,以避免在代码中使用字符串文字(我们都知道它看起来更简单,但从长远来看会导致愚蠢的错误)。
我能想到的唯一好的解决方案是在项目构建过程中使用一个过程,该过程将为DB中的所有枚举生成常量,或者使用这些值创建和编译PHP扩展。
那里有任何不同的,更好的解决方案吗?

1 个答案:

答案 0 :(得分:3)

正如Plato所说:PHP和SQL是独立的,或者SQL是从PHP生成的,或者PHP是从SQL生成的,或者两者都是从同一个源生成的。

如果发生了很多变化,第一个通常是不可接受的,但其他方面相当稳定。

第二种是最近的一些解决方案,它们从PHP端管理你的SQL(并且优雅地处理来自PHP端的模式更改)。这意味着您疯狂的SQL忍者技能可能毫无用处且令人沮丧

第三个是你的建议。只要您可以在不踩到源控制系统和包系统的脚趾的情况下管理“在构建期间生成”部分,这很好。有一个干净的构建系统有帮助(这在PHP中有点不寻常)。

第四个涉及调整现有数据库建模工具以生成SQL模式和PHP代码。这样,您只需每两周使用一次该工具,生成PHP和SQL,并提交结果。然而,调整工具可能非常讨厌(然后,您可以尝试寻找XML导出并从那里开始工作)。