/** * @copydoc Control::loadFromXml */ public function loadFromXml(\SimpleXMLElement $description) { parent::loadFromXml($description); if ($description->options) { foreach ($description->options->option as $item) { $this->addItem((string) $item['id'], (string) $item); } } }
/** * @copydoc Control::loadFromXml * * @throws SystemException 'ERR_DEV_NO_CONTROL_TYPE' * @throws SystemException 'ERR_DEV_NO_CONTROL_CLASS' */ public function loadFromXml(\SimpleXMLElement $description) { parent::loadFromXml($description); foreach ($description->control as $controlDescription) { if (!isset($controlDescription['type'])) { throw new SystemException('ERR_DEV_NO_CONTROL_TYPE', SystemException::ERR_DEVELOPER); } $controlClassName = ucfirst((string) $controlDescription['type']); if (!class_exists($controlClassName, false)) { throw new SystemException('ERR_DEV_NO_CONTROL_CLASS', SystemException::ERR_DEVELOPER, $controlClassName); } $control = new $controlClassName(isset($controlDescription['id']) ? (string) $controlDescription['id'] : null); $this->attachControl($control); $control->loadFromXml($controlDescription); } }