【发布时间】:2009-07-04 22:39:39
【问题描述】:
我目前正在编写一个实现 MVC 并很好地减少复杂事物的 Web 应用程序。然而,我已经思考了几个小时,为 Oracle、PostgreSQL、Firebird 等未来的数据库系统做些什么。
然后再一次在逻辑中实现这些适配器是什么让我着迷,我应该用大量的 SWITCH 来触发它吗?在这种情况下我该怎么办?
【问题讨论】:
标签: php model-view-controller database
我目前正在编写一个实现 MVC 并很好地减少复杂事物的 Web 应用程序。然而,我已经思考了几个小时,为 Oracle、PostgreSQL、Firebird 等未来的数据库系统做些什么。
然后再一次在逻辑中实现这些适配器是什么让我着迷,我应该用大量的 SWITCH 来触发它吗?在这种情况下我该怎么办?
【问题讨论】:
标签: php model-view-controller database
对此的典型答案是在您的框架中使用 ORM 功能。您可以将模型视为数据对象,也可以使用一些组合并让模型具有数据对象。无论哪种方式,您的数据对象都应该是相当抽象的,并且主要使用方法编译 DB 查询查询 - 就像 Zend 框架使用 Select 对象一样。这使您可以 a) 将 sql 排除在对象之外并 b) 替换实际生成 sql 的对象。
因此,如果您的数据对象都继承自同一个 ORM 基类,则可以为该基类提供一个它发送查询的 DB 对象。如果你正确地使用它,ORM 基类将不知道 DB 类的类型:数据对象编译一个选择对象并将其交给 DB 对象,然后以它认为最好的方式解释它。
简短的回答:不,不要使用一堆 switch 语句:)
【讨论】:
然而,我已经思考了几个小时,要为未来的数据库系统做些什么,比如...
【讨论】:
如果您想要一个用于 PHP 的轻量级 ORM,我会查看 Outlet。它应该适用于任何标准 PDO 数据库类型。
【讨论】:
我会避免 ORM 层,这是 Drupal 开发人员不得不说的
【讨论】: