【发布时间】:2016-01-15 18:16:01
【问题描述】:
我正在编写一个复制对象的方法。与其手动设置每个属性,不如仅循环遍历原始对象的属性会更加健壮...
//Booo
$new->name = $old->name;
$new->color = $old->color;
...
//Oh yeah...
foreach ($old as $prop=>$val){
$new->$prop = $val;
}
unset $new->id;
CakePHP 实体似乎无法以这种方式进行迭代。我尝试使用$old->toArray(),它基本上可以工作......但也有将所有关联转换为数组的缺点,这让我在下游搞砸了。
如何在不转换所有数据类型的情况下遍历 $old 属性?
更新:
Mark 让我注意到__clone() 方法的存在。听起来它完全符合我的需要,但我仍在研究如何使用它。
【问题讨论】:
-
如果您尝试复制对象上的所有属性,您可能需要使用
clone。 -
谢谢马克!我无法在文档中找到它......它也会做关联吗?喜欢级联克隆?
-
@MarkStory 我更新了问题的标题,以更准确地反映我正在尝试做的事情。您的
__clone()提示听起来很准确...想要将其作为答案提交?
标签: php cakephp cakephp-3.0