private static function putArgumentToPlace(IDataGroup $group, $names, $value) { $name = array_shift($names); if (count($names)) { // group $index = (int) $name; /** @var IDataGroup */ $item = null; if ((string) $index == $name && $group instanceof IDataLevels) { /** @var IDataLevelsManager */ $levelsManager = $group->levelsManager(); if ($levelsManager->has($index)) { //echo " - level get($index) \r\n"; $item = $levelsManager->get($index); } else { //echo " - level new($index) \r\n"; $item = new DataGroup(); $levelsManager->set($index, $item); } } else { /** @var IDataGroupManager */ $groupManager = $group->groupManager(); if ($groupManager->has($name)) { //echo " - group get($name) \r\n"; $item = $groupManager->get($name); } else { //echo " - group new($name) \r\n"; $item = new DataGroup(); $groupManager->set($name, $item); $item = $groupManager->get($name); } } self::putArgumentToPlace($item, $names, $value); } else { // value /** @var IDataContainerManager */ $dataManager = $group->dataManager(); //echo " - value new($name) \r\n"; $dataManager->set($name, $value); } }