PHP - 从现有对象创建新对象而不复制属性

时间:2014-09-10 21:53:18

标签: php clone

我使用 Symfony2 PHP框架 Doctrine ORM mysql 来存储数据。

我的目标是通过从遗留数据库系统加载数据来填充Doctrine实体(PHP对象),遗留数据库系统以key:value对的形式返回数据。

我有很多PHP objects('Company','Employee',etc.)扩展了相同的Abstract Class('AbstractDatabaseRecord').

我的abstract class('AbstractDatabaseRecord')有一个属性(' DatabaseTable'),告诉我在为每个对象加载数据时使用哪个表格('公司', '员工'等)

我的抽象类实现了一个interface ('DatabaseLoadable'),它需要一个名为getColumns()的方法,它应该返回构成对象属性的列数组。该接口还需要一个名为loadDatabaseData()的方法,该方法应处理从遗留系统返回的数组,并运行适当的setter来填充PHP对象。

我有一个名为LegacyDatabase的Symfony2服务(PHP类),它有几个名为findOne()findAll().的方法

findOne(AbstractDatabaseRecord $object, $id)接受一个对象,使用DatabaseTable属性确定要查询的表,然后使用id查询该表。然后它使用loadDatabaseData()方法填充对象并将对象返回给我,以便我可以使用它。

我认为这个结构正常,但我不确定如何实现findAll()函数。

findAll(AbstractDatabaseRecord)接受一个对象,使用DatabaseTable属性来确定要查询的表,然后从该表中选择所有记录。然后我遍历结果,理想情况下将为找到的每个记录填充一个新对象,将对象放在一个数组中,并返回新创建的对象数组供我使用。

但是在函数中我只有一个对象的实例。如果我现在知道传入的Concrete Parent类,那么创建其他实例的最佳方法是什么?

根据我的研究,似乎我想要克隆对象以获得浅拷贝,然后填充该新副本并将其添加到我的对象数组中。这是最好的方法吗?

0 个答案:

没有答案