27 private $discriminator;
36 foreach ($parsers as $parserName => $parserInstance) {
38 throw new \InvalidArgumentException(
39 "Parser named '{$parserName}' is expected to be an argument parser instance." 43 $this->parsers = $parsers;
44 $this->discriminator = $discriminator;
53 if (!isset(
$data[$this->discriminator])) {
54 throw new \InvalidArgumentException(
55 sprintf(
'Value for key "%s" is missing in the argument data.', $this->discriminator)
58 $parserName =
$data[$this->discriminator];
59 $parser = $this->getParser($parserName);
60 return $parser->parse(
$data, $node);
73 if (isset($this->parsers[
$name])) {
74 throw new \InvalidArgumentException(
"Argument parser named '{$name}' has already been defined.");
76 $this->parsers[
$name] = $instance;
86 private function getParser(
$name)
88 if (!isset($this->parsers[
$name])) {
89 throw new \InvalidArgumentException(
"Argument parser named '{$name}' has not been defined.");
91 return $this->parsers[
$name];
__construct(array $parsers, $discriminator)
parse(array $data, \DOMNode $node)
addParser($name, ParserInterface $instance)
if(!isset($_GET['name'])) $name