【发布时间】:2012-01-01 15:33:15
【问题描述】:
简单地说一下表数据网关 (TDG) 实现:您创建单独的 TDG 类,其中包含用于使用具体表的 CRUD 操作的 SQL。因此,您的模型不是直接与数据源(例如数据库)进行通信,而是通过那些抽象的 TDG 类进行通信。所以,它只是一种进行另一层抽象的方法,它只是一个与数据库通信的包装器——获取和修改数据。恕我直言,TDG 类不应包含成员,仅包含方法。这是一个很好的架构,可以可视化TDG pattern 的使用。使用 TDG 方法时,应将 SQL 从模型类移至数据源 (TDG) 类。我通过 TDG 类从 DB 中检索到的所有数据都存储在我的模型成员中。
现在,如何实现活动记录?如果我将数据访问和我的模型类合并到一个模型类中,那么我会实现活动记录吗?我无法找到明确的区别或这些模式在 PHP 中的外观以及彼此之间的差异。
通常,我有一个单例数据库类,然后为每个数据库表单独的模型类。每个模型类都有 CRUD + 几个自定义(计数、平均等)操作。某些类具有用于持久化 CRUD 或自定义操作的结果的成员 - 这是根据需要完成的。这种方法可以被识别为活动记录吗?另外,如果我将 SQL 从我的模型类移动到 TDG 类,这会是表数据网关吗?
【问题讨论】:
标签: php design-patterns activerecord