获取Zend_Db_Table结果集以返回不同类型的对象

时间:2013-09-25 15:17:01

标签: php oop zend-framework

假设我有一个代表表DbTable_Product的{​​{1}}表类。当我查询该表时,即

product

我得到$myProducts = $productTable->fetchAll(); 个对象的结果集。这很好,这是我永远这样做的方式。

我刚才在两个项目中第二次遇到问题,我希望在结果集中返回的对象类型更具体。

例如,假设几乎所有产品都没有任何特殊行为,因此使用通用DbTableRow_Product类适合它们。但是有一种困难的产品确实需要额外的行为。

假设我创建了一个名为DbTableRow_Product的类,它继承自DbTableRow_Product_Phone。我希望表对象在结果行不是电话时返回DbTableRow_Product个对象,并且DbTableRow_Product当它出现时,都在同一个结果集中。

我在之前的项目中通过覆盖表对象中的DbTableRow_Product_PhonefetchRowfetchAllgetRowClass方法来创建正确类型的对象。这有效,但看起来很脏。

是否有更简单的方法在createRow中创建不同的对象类型,具体取决于行的类型?这种方法是否有意义?

0 个答案:

没有答案