我在写一个复制对象的方法。与其手动设置每个属性,不如循环原始对象的属性…

//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属性?
更新:
马克让我注意到一种__clone()方法的存在。听起来它确实能满足我的需要,但我仍在想如何使用它。

最佳答案

您可以使用$entity->visualproperties()

foreach($old->visualProperties() as $property) {
    if($new->has($property))
        $new->set($property, $old->get($property));

关于php - 如何复制CakePHP实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34817281/

10-15 07:54