由于多种原因(基本上所有这些都可以归结为糟糕的管理决策),我们无法切换到 PHP5,这意味着我们可能不得不再支持 PHP4 几年。
由于我们的许多应用程序(与许多 Web 应用程序一样)都是美化的 CRUD 应用程序,并且因为我喜欢偶尔拿起家庭项目来浪费一些时间,所以我目前正在编写一个类似 ORM 的小型类,它将充当大多数基本查询(插入、更新、替换、删除等)的包装器。由于它必须支持 PHP4,PDO
所以这是不可能的,所以我将不得不回退到特定于语言的函数,例如mysql_query
. 因为我们使用了几个不同的系统,在各种版本(Interbase 版本 4 及更高版本、Firebird、MySQL)中,我的 ORM / Wrapper 类(不知道如何称呼它)势必会变大。
为了解决这个问题,我想到了两种可能的“解决方案”:
- 编写一个庞大的类,
switch
在函数内部使用基于$database_system
定义所用语言/RDBMS 的变量的语句 - 每个 RDBMS 编写一个基类,并编写一个派生类(可能每个版本,如果它们之间的功能差异很大)。
目前我倾向于第二种选择;在我看来,它使维护变得更容易,尤其是在将新的 RDBMS 添加到支持列表时。另一方面,每个 RDBMS 都使用它自己的一组 PHP 函数,我不确定从基类继承多少。请记住,此类最终将支持排队、执行(如果支持,还可能提交)整个查询列表等功能。
鉴于这种情况,哪种方法最好?A 或 B,或者可能有一个我还没有考虑过的 C?现有类的一些示例将是完美的,不幸的是,我遇到的大多数 ORM 都依赖于(仅限 PHP5)PDO
类。