/** * @param $elements object[]|Component[] the component objects * @param $composite_class_name string the composite class name */ private function removeCompositeFromComponents($elements, $composite_class_name) { if (isA($element = reset($elements), Component::class)) { $getCompositeProperty = [get_class($element), 'getCompositeProperty']; if ($composite_property = call_user_func($getCompositeProperty, $composite_class_name)) { foreach ($elements as $element) { $property_name = $composite_property->name; $id_property_name = 'id_' . $property_name; if (isset($element->{$property_name})) { $this->dao->disconnect($element->{$property_name}); } unset($element->{$id_property_name}); } } } }