29 private $discriminator;
36 public function __construct(array $converters, $discriminator)
38 foreach ($converters as $converterName => $converterInstance) {
40 throw new \InvalidArgumentException(
41 "Converter named '{$converterName}' is expected to be an argument converter instance." 45 $this->converters = $converters;
46 $this->discriminator = $discriminator;
55 if (!isset(
$data[$this->discriminator])) {
56 throw new \InvalidArgumentException(
57 sprintf(
'Value for key "%s" is missing in the argument data.', $this->discriminator)
60 $converterName =
$data[$this->discriminator];
61 unset(
$data[$this->discriminator]);
62 $converter = $this->getConverter($converterName);
63 return $converter->convert($node,
$data);
76 if (isset($this->converters[
$name])) {
77 throw new \InvalidArgumentException(
"Argument converter named '{$name}' has already been defined.");
79 $this->converters[
$name] = $instance;
89 private function getConverter(
$name)
91 if (!isset($this->converters[
$name])) {
92 throw new \InvalidArgumentException(
"Argument converter named '{$name}' has not been defined.");
94 return $this->converters[
$name];
__construct(array $converters, $discriminator)
convert(\DOMNode $node, array $data)
addConverter($name, ConverterInterface $instance)
if(!isset($_GET['name'])) $name