行的zend框架行集,都是同一个类

时间:2010-11-25 23:07:58

标签: php zend-framework

我想使用相同的类作为行类和基类来获取结果,但我认为我的方法是错误的...

即我需要同一个类来扩展Zend_Db_Table_Row_AbstractZend_Db_Table_Abstract,但是认为这会将两个不同的东西放在同一个类中? (延长两个是不可能的)..

例如,我认为基类应该处理选择查询等,行类应该处理更新等。但我希望能够去:

class Article extends BaseModel { //Set table name and some custom functions }

BaseModel { //Define custom functions for finding rows and updating }

Article::findAll() //This is table logic

Article::insert($data); //This is row login

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找ActiveRecord pattern

  

在数据库表或视图中包装行的对象,封装数据库访问,并在该数据上添加域逻辑。

有一个Zend_Db_ActiveRecord组件的提案,但它从未离开过“新”阶段。虽然提案中有许多UseCases,但它可能会为您提供一些如何自己实现的建议。您可能也有兴趣使用现有的第三方解决方案,例如Propelphpactiverecord

Please be aware that ActiveRecord is often misused and has a number of drawbacks due to the violation of separation of concerns due to the intermingling of db access and business logic in one class.

答案 1 :(得分:0)

这样做的正确方法是有两个类 - 一个用于行(某种模型)和用于表(某种映射器)。
你为什么要把它们放在一个班级?课程的目的不是分开不属于(直接)的东西吗? 如果你真的希望它在同一个类中,并且方法getTable到行类并将行类扩展为表类的适配器(当然我强烈反对:)。