行特定类

时间:2010-06-03 13:41:50

标签: zend-framework zend-db zend-db-table

如何创建Zend_Db_Table,为每行返回不同的类。?

实施例 UserTable具有id,名称和类型 类型包含类名(admin,client等)

类admin,client都是用户

的子类

如果我调用fetch,我需要获取一个admin或client对象,具体取决于db中的相应值。

1 个答案:

答案 0 :(得分:0)

class Your_Db_Table_Row extends Zend_Db_Table_Row_Abstract
{
}

class Your_Db_Table extends Zend_Db_Table_Abstract
{
    protected $_rowClass = "Your_Db_Table_Row";
}

new Your_Db_Table(array("rowClass" => "Your_Db_Table_Row");

因此,无论何时从表子类中获取行集,其中包含的行都将是您的自定义类。

修改

要根据值获取自定义行,我想改为扩展Zend_Db_Table_Rowset_Abstract类并覆盖此方法:

getRow(int $position, [bool $seek = false])

您还需要覆盖current方法以及可能基于SeekableIterator属性实际创建行类的其他_rowClass实现。您可以根据数据的行类型调用_rowClass之前设置current

您可以在current中实例化一个特定的类,并根据type参数返回它。

你有没有可能只是使用作品而不是?如果它是管理员类型或其他东西,只是将数据传递给新类?