我想使用相同的类作为行类和基类来获取结果,但我认为我的方法是错误的...
即我需要同一个类来扩展Zend_Db_Table_Row_Abstract
和Zend_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
这样做的正确方法是什么?
答案 0 :(得分:1)
我认为您正在寻找ActiveRecord pattern:
在数据库表或视图中包装行的对象,封装数据库访问,并在该数据上添加域逻辑。
有一个Zend_Db_ActiveRecord
组件的提案,但它从未离开过“新”阶段。虽然提案中有许多UseCases,但它可能会为您提供一些如何自己实现的建议。您可能也有兴趣使用现有的第三方解决方案,例如Propel或phpactiverecord
答案 1 :(得分:0)
这样做的正确方法是有两个类 - 一个用于行(某种模型)和用于表(某种映射器)。
你为什么要把它们放在一个班级?课程的目的不是分开不属于(直接)的东西吗?
如果你真的希望它在同一个类中,并且方法getTable
到行类并将行类扩展为表类的适配器(当然我强烈反对:)。