0

假设我有一个DbTable_Product代表 table 的 table 类product。当我查询该表时,即

$myProducts = $productTable->fetchAll();

我得到一个DbTableRow_Product对象的结果集。这很好,这是我永远这样做的方式。

我刚刚在两个项目中第二次遇到了一个问题,我想更具体地说明结果集中返回的对象类型。

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

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

我在之前的项目中通过覆盖表对象中的 、 和fetchRow方法fetchAll来创建正确类型的对象来完成此操作。这有效,但看起来很脏。getRowClasscreateRow

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

4

0 回答 0