20 private $interpreters;
27 private $discriminator;
34 public function __construct(array $interpreters, $discriminator)
36 foreach ($interpreters as $interpreterName => $interpreterInstance) {
38 throw new \InvalidArgumentException(
39 "Interpreter named '{$interpreterName}' is expected to be an argument interpreter instance." 43 $this->interpreters = $interpreters;
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 $interpreterName =
$data[$this->discriminator];
59 unset(
$data[$this->discriminator]);
61 return $interpreter->evaluate(
$data);
74 if (isset($this->interpreters[
$name])) {
75 throw new \InvalidArgumentException(
"Argument interpreter named '{$name}' has already been defined.");
77 $this->interpreters[
$name] = $instance;
89 if (!isset($this->interpreters[
$name])) {
90 throw new \InvalidArgumentException(
"Argument interpreter named '{$name}' has not been defined.");
92 return $this->interpreters[
$name];
addInterpreter($name, InterpreterInterface $instance)
__construct(array $interpreters, $discriminator)
if(!isset($_GET['name'])) $name