假设我有一个代表表DbTable_Product
的{{1}}表类。当我查询该表时,即
product
我得到$myProducts = $productTable->fetchAll();
个对象的结果集。这很好,这是我永远这样做的方式。
我刚才在两个项目中第二次遇到问题,我希望在结果集中返回的对象类型更具体。
例如,假设几乎所有产品都没有任何特殊行为,因此使用通用DbTableRow_Product
类适合它们。但是有一种困难的产品确实需要额外的行为。
假设我创建了一个名为DbTableRow_Product
的类,它继承自DbTableRow_Product_Phone
。我希望表对象在结果行不是电话时返回DbTableRow_Product
个对象,并且DbTableRow_Product
当它出现时,都在同一个结果集中。
我在之前的项目中通过覆盖表对象中的DbTableRow_Product_Phone
,fetchRow
,fetchAll
和getRowClass
方法来创建正确类型的对象。这有效,但看起来很脏。
是否有更简单的方法在createRow
中创建不同的对象类型,具体取决于行的类型?这种方法是否有意义?