public static function parse(\DOMNode $node) { if ($node->nodeName == self::getNodeName()) { $actions = new ActionList(); foreach (XMLUtils::getChildrenByName($node, AbstractAction::getNodeName()) as $action) { $actions->add(AbstractAction::parse($action)); } return new Target(XMLUtils::getAttributeByName($node, "name")->nodeValue, Uri::fromString(XMLUtils::getChildByName($node, "uri")->nodeValue), $actions, AbstractView::parse(XMLUtils::getChildByName($node, AbstractView::getNodeName()))); } throw new \Exception("Unexpected node '" . $node->nodeName . "', expected '" . self::getNodeName() . "'"); }
public static function parse(\DOMNode $node) { if ($node->nodeName == self::getNodeName()) { $mime = XMLUtils::getAttributeByName($node, "mime") != null ? XMLUtils::getAttributeByName($node, "mime")->value : null; $code = XMLUtils::getAttributeByName($node, "code") != null ? XMLUtils::getAttributeByName($node, "code")->value : null; switch ($type = XMLUtils::getAttributeByName($node, "type")->value) { case "file": if (is_file($file = FileUtils::getAbsolutePath($node->nodeValue, Star::instance()->getRootDirectory()))) { switch ($extension = FileUtils::getExtension($file)) { case "html": return new HTMLFileView($file, $mime, $code); case "php": return new PHPFileView($file, $mime, $code); /* case "twig": return new TwigFileView($file, $mime, $code); */ /* case "twig": return new TwigFileView($file, $mime, $code); */ default: throw new \Exception("Unhandled file type '" . $extension . "' for file '" . $file . "'"); } } throw new \Exception("No such file '" . $file . "'"); /* case "class": if(ClassLoader::getInstance()->classInstanceOf($node->nodeValue, "AbstractView")){ return ClassLoader::getInstance()->newInstance($node->nodeValue); } throw new Exception("Class '" . $node->nodeValue . "' must be a subclass of '" . ClassLoader::getInstance()->getClassByName('AbstractView') . "'"); */ /* case "class": if(ClassLoader::getInstance()->classInstanceOf($node->nodeValue, "AbstractView")){ return ClassLoader::getInstance()->newInstance($node->nodeValue); } throw new Exception("Class '" . $node->nodeValue . "' must be a subclass of '" . ClassLoader::getInstance()->getClassByName('AbstractView') . "'"); */ default: throw new \Exception("Unhandled type '" . $type . "', expecting type in 'file' or 'class'"); } } throw new \Exception("Unexpected node '" . $node->nodeName . "', expected '" . self::getNodeName() . "'"); }
public static function parse(\DOMNode $node) { if ($node->nodeName == self::getNodeName()) { $path = XMLUtils::getChildByName($node, "path"); $requirements = array(); if (($require = XMLUtils::getAttributeByName($node, "require")) != null) { foreach (explode(",", $require->nodeValue) as $requirement) { $requirements[] = trim($requirement); } } try { $reflection = new \ReflectionClass($path->nodeValue); $instance = $reflection->newInstance(XMLUtils::getAttributeByName($node, "name")->nodeValue, $requirements); if ($instance instanceof AbstractAction) { return $instance; } throw new \Exception("The class '" . $path->nodeValue . "' must be a subclass of AbstractAction"); } catch (\ReflectionException $re) { throw new \Exception("No class found for '" . $path->nodeValue . "'"); } } throw new \Exception("Unexpected node '" . $node->nodeName . "', expected '" . self::getNodeName() . "'"); }