如何创建Zend_Db_Table,为每行返回不同的类。?
实施例 UserTable具有id,名称和类型 类型包含类名(admin,client等)
类admin,client都是用户
的子类如果我调用fetch,我需要获取一个admin或client对象,具体取决于db中的相应值。
答案 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参数返回它。
你有没有可能只是使用作品而不是?如果它是管理员类型或其他东西,只是将数据传递给新类?