首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最佳实践/信息:编写PHP4 ORM

最佳实践/信息:编写PHP4 ORM
EN

Stack Overflow用户
提问于 2009-11-10 21:30:50
回答 3查看 508关注 0票数 1

由于许多原因(基本上可以归结为糟糕的管理决策),我们无法切换到PHP5,这意味着我们可能还要支持PHP4几年。

由于我们的许多应用程序(和很多web应用程序一样)都是被美化的CRUD应用程序,而且由于我喜欢偶尔选择一些家庭项目来浪费时间,我目前正在编写一个类似ORM的小类,它将作为大多数基本查询的包装器(insert、update、replace、delete等)。因为它必须支持PHP4,所以PDO是不可能的,所以我不得不回到特定于语言的函数,例如mysql_query。因为我们使用的是几个不同的系统,在不同的版本(Interbase versions 4及更高版本,Firebird,MySQL)中,我的ORM /包装类(不知道该如何称呼它)肯定会变得越来越大。

为了解决这个问题,我想出了两个可能的“解决方案”:

  • 编写一个庞大的类,在函数中使用switch语句,该类基于定义所使用的语言/关系数据库管理系统的$database_system变量
  • 编写一个基类,并为每个RDBMS编写一个派生类(可能是每个版本,如果它们之间的特性有很大差异)。

目前,我倾向于第二种选择;在我看来,它使维护变得更容易,特别是在向受支持的列表中添加新的RDBMS时。另一方面,由于每个RDBMS都使用它自己的一组PHP函数,我不确定从一个基类继承多少。记住,这个类最终将支持诸如排队、执行(如果支持的话可能提交)一个完整的查询列表等特性。

在这种情况下,哪种方法最好?A或B,还是我还没有考虑的C呢?一些现有类的示例将是完美的,不幸的是,我遇到的大多数ORM类都依赖于(仅PHP5) PDO类。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-10 21:37:30

当然可以选择2,你的OO方法比大规模的开关方法要好。您的基类将给您提供的不仅仅是继承公共方法。它为您提供了一个一致的接口,以后可以在迁移到其他数据库持久性策略(PHP5 5/PDO,当管理正常时用作适配器?)。我甚至会在PDO之后对您的界面进行严密的建模,如果需要的话,PDO甚至可以作为本地持久层的替代。此外,对于在项目中学习持久性层的新开发人员来说,如果他们已经有PDO经验的话,他们的学习曲线会更低。

票数 2
EN

Stack Overflow用户

发布于 2009-11-10 21:39:10

我无法理解使用完全不受支持的软件作为新软件开发的基础的管理决策。对于一个管理人员来说,安装PHP 5的成本几乎为零,至少是并行的。PHP 4的唯一结果是开发成本更高( PHP 5类比PHP 4多,现在所有工具都依赖PHP 5,PHP 4的最后提醒消失了),使用PHP 5的生产成本更低--您必须自己修复PHP运行时中的bug,PHP5.3使用的系统资源更少,.)

但是如果您真的想这样做的话:Pear::MDB2 2应该做您需要的事情,并且是PHP4兼容的和非常稳定的。

但我宁愿换工作..。这样的决定通常不是唯一愚蠢的决定。

票数 1
EN

Stack Overflow用户

发布于 2011-05-24 21:30:34

如果有人在寻找模拟的东西(我不希望如此),但是如果-你应该看看xPDO。

它是pdo在php4上工作的另一种选择。从未试过使用它-但我认为它应该有效. http://www.xpdo.org/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1711353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档