/** * Recursive Merging of two Entities, regardless of type */ public function mergeParams($subject, $subject2, $overwrite = true) { if (is_object($subject)) { $properties = get_object_vars($subject2); if (!empty($properties)) { foreach ($properties as $pname => $pvalue) { if (isset($subject->{$pname}) && $overwrite) { $subject->{$pname} = serialParamDBTable::mergeParams($subject->{$pname}, $pvalue, $overwrite); } else { $subject->{$pname} = $pvalue; } } } } elseif (is_array($subject)) { if (!empty($subject2)) { foreach ($subject2 as $pname => $pvalue) { if (isset($subject[$pname]) && $overwrite) { $subject[$pname] = serialParamDBTable::mergeParams($subject[$pname], $pvalue, $overwrite); } elseif (!isset($subject[$pname])) { $subject[$pname] = $pvalue; } } } } elseif ($overwrite) { $subject = $subject2; } return $subject; }