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