private function mapConfig(Ezer_Config $config) { if (!isset($this->xml_map[$config->entityName])) { throw new Ezer_XmlPersistanceElementNotMappedException($config->entityName); } $class = $this->xml_map[$config->entityName]; if (!class_exists($class)) { throw new Ezer_XmlPersistanceMissingClassException($class); } if (isset($config['id'])) { $this->unique_id = $config['id']; } $object = new $class($this->unique_id++); if ($config->type == Ezer_Config::ARRAY_TYPE) { foreach ($config as $attribute => $value) { if (!is_numeric($attribute)) { continue; } if ($config->{$attribute} instanceof Ezer_Config) { $object->add($this->mapConfig($value)); } else { $object->add($value); } } } $attributes = $config->getKeys(); foreach ($attributes as $attribute) { if ($attribute == 'id') { continue; } if ($config->type == Ezer_Config::ARRAY_TYPE && is_numeric($attribute)) { continue; } if ($config->{$attribute} instanceof Ezer_Config) { $object->{$attribute} = $this->mapConfig($config->{$attribute}); } else { $object->{$attribute} = $config->{$attribute}; } } if ($object instanceof Ezer_Loadable) { $object->validate(); } return $object; }