Zend framework 行特定类

Zend framework 行特定类,zend-framework,zend-db,zend-db-table,Zend Framework,Zend Db,Zend Db Table,如何创建一个Zend_Db_表,它为每一行返回不同的类 范例 UserTable具有id、名称和类型 类型包含类名(管理员、客户端等…) 类admin、client都是user的子类 如果我调用fetch,我需要根据数据库中的相应值获取一个admin或client对象 class Your_Db_Table_Row extends Zend_Db_Table_Row_Abstract { } class Your_Db_Table extends Zend_Db_Table_Abstract

如何创建一个Zend_Db_表,它为每一行返回不同的类

范例 UserTable具有id、名称和类型 类型包含类名(管理员、客户端等…)

类admin、client都是user的子类

如果我调用fetch,我需要根据数据库中的相应值获取一个admin或client对象

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";
}

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

编辑

要基于值获取自定义行,我建议扩展
Zend\u Db\u Table\u Rowset\u Abstract
类,并重写此方法:

getRow(int $position, [bool $seek = false])
您还需要重写
当前的
方法,也许还需要重写其他一些
SeekableIterator
实现,这些实现实际上基于
\u rowClass
属性创建了一个row类。您可以在根据数据的行类型调用
当前
之前设置
\u rowClass

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

你想过用构图来代替吗?如果是管理员类型或其他类型的话,可以说只是将数据传递给一个新类

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

编辑

要基于值获取自定义行,我建议扩展
Zend\u Db\u Table\u Rowset\u Abstract
类,并重写此方法:

getRow(int $position, [bool $seek = false])
您还需要重写
当前的
方法,也许还需要重写其他一些
SeekableIterator
实现,这些实现实际上基于
\u rowClass
属性创建了一个row类。您可以在根据数据的行类型调用
当前
之前设置
\u rowClass

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


你想过用构图来代替吗?如果是管理员类型或其他类型的话,可以说只是将数据传递给一个新类

这将为每一行使用“Your\u Db\u Table\u row”类,它需要根据“type”字段值而有所不同;我把那个问题看得太快了。使用建议编辑。这将为每一行使用“Your\u Db\u Table\u row”类,它需要根据“type”字段值而有所不同。非常正确;我把那个问题看得太快了。我觉得这个问题很有趣,但我不知道是什么让它成为必要。似乎模型应该抽象它,所以你不需要这样做。我觉得这个问题很有趣,但我想知道是什么让它成为必要。看起来模型应该抽象它,所以你不需要这样做。