Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-从现有对象创建新对象而不复制属性_Php_Clone - Fatal编程技术网

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

PHP-从现有对象创建新对象而不复制属性,php,clone,Php,Clone,我正在使用Symfony2 PHP框架和ORM和mysql来存储数据 我的目标是通过从遗留数据库系统加载数据来填充Doctrine entitiesPHP对象,该系统以键:值对的形式返回数据 我有许多PHP对象“Company”、“Employee”等,它们扩展了相同的抽象类“AbstractDatabaseRecord” 我的抽象类“AbstractDatabaseRecord”有一个属性“DatabaseTable”,它告诉我在为每个对象“Company”、“Employee”等加载数据时要

我正在使用Symfony2 PHP框架和ORM和mysql来存储数据

我的目标是通过从遗留数据库系统加载数据来填充Doctrine entitiesPHP对象,该系统以键:值对的形式返回数据

我有许多PHP对象“Company”、“Employee”等,它们扩展了相同的抽象类“AbstractDatabaseRecord”

我的抽象类“AbstractDatabaseRecord”有一个属性“DatabaseTable”,它告诉我在为每个对象“Company”、“Employee”等加载数据时要使用哪个表

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

我有一个名为LegacyDatabase的Symfony2ServicePHP类,它有两个名为findOne和findAll的方法

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

我认为这个函数的结构还可以,但我不确定如何实现findAll函数

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

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


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

最简单的是:$obj=newfoo$class=get_class$obj$otherobj=新的$class;。使用$reflection=新的ReflectionObject$obj可以实现更多的eloborate$otherobj=$reflection->newInstance;或者其他->newInstance*方法,例如带参数的方法,或者不调用构造函数的方法。谢谢,我不知道我可以使用new$class来创建对象,这确实简化了things@Wrikken,这应该是一个答案。