如何創建一個Zend_Db_Table,它返回每行不同的類。行特定類
例 用戶表都有編號,名稱和類型 類型包含的類名(管理員,客戶端等)
的類管理,客戶端是用戶
所有子類。如果我把取我需要獲取管理員或客戶端對象,具體取決於數據庫中的相應值。
如何創建一個Zend_Db_Table,它返回每行不同的類。行特定類
例 用戶表都有編號,名稱和類型 類型包含的類名(管理員,客戶端等)
的類管理,客戶端是用戶
所有子類。如果我把取我需要獲取管理員或客戶端對象,具體取決於數據庫中的相應值。
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
屬性創建了一個行類。根據數據的行類型調用current
之前,您可以設置_rowClass
。
你可以在當前實例化一個特定的類並根據類型參數返回它。
你有沒有關於也許只是使用組合而已?如果只是傳遞數據給一個新的類,如果它是一個管理類型或什麼的?
這將爲每行使用'Your_Db_Table_row'類,它需要根據'type'字段值有所不同。 – stimpie 2010-06-03 14:48:36
非常真實;我很快就讀到了這個問題。編輯一個建議。 – typeoneerror 2010-06-03 16:10:02
我覺得這個問題很有趣,但我仍然想知道是什麼使得它有必要。看來模型應該抽象它,所以你不需要這樣做。 – Sonny 2010-06-03 17:42:45