我可以在php中更改对象的类型吗?

时间:2015-02-21 17:51:59

标签: php class oop object

我使用PDOStatement对象将查询结果提取到NewOrder类类型的对象中。

$result = $pdo->query($strsql);
$result->setFetchMode(PDO::FETCH_CLASS, 'NewOrder');
$order = $result->fetch()

NewOrder是一个有孩子的基类。我总是需要实例化一个子而不是这个基类NewOrder(它可能是一个抽象类,但然后提取不起作用)。但是,可以根据order_type的{​​{1}}字段中的值来确定要实例化的子项。获取result后,我可以访问此值:

result

获得此值后,是否可以将$orderType = $order->getOrderType(); 对象的类型从$order更改为其子项之一(取决于值NewOrder)?我想这样做的原因是因为我想避免创建一个新对象并将$orderType类型的对象$order的所有属性重新分配给NewOrder的对象$order2 } type。

1 个答案:

答案 0 :(得分:0)

您不能在PHP中对对象进行类型转换。请参阅Type casting for user defined objects的答案。

也许您想看一下Doctrine 2 ORM支持此类映射的Single Table Inheritance