public function bindParameter(Parameter $parameter) { $key = Key::ofParameter($parameter); if ($parameter->isAnnotatedWith("Spot\\Inject\\Lazy")) { return new LazyBinding($key); } $binding = $this->bindings->get($key); if (empty($binding)) { $class = $parameter->getClass(); if ($class && !$parameter->isDefaultValueAvailable()) { try { $this->bind($class); } catch (ConfigurationException $e) { throw new ConfigurationException($e->getMessage() . ", required by parameter \${$parameter->name} in " . $parameter->getDeclaringClass()->name . "::" . $parameter->getDeclaringFunction()->name); } $binding = $this->bindings->get($key); } } if (empty($binding) && $parameter->isDefaultValueAvailable()) { $binding = $parameter->isDefaultValueConstant() ? new ConstantNameBinding($key, $parameter->getDefaultValueConstantName()) : new ConstantValueBinding($key, $parameter->getDefaultValue()); } if (empty($binding)) { throw new ConfigurationException("Missing dependency {$key}" . ", required by parameter \${$parameter->name} in " . $parameter->getMethod()->getType()->name . "::" . $parameter->getMethod()->name . "()"); } return $binding; }
public function bindParameter(Parameter $parameter) { $key = Key::ofParameter($parameter); if ($parameter->isAnnotatedWith("Spot\\Inject\\Lazy")) { return new LazyBinding($key); } $binding = new LateBinding($key); if ($parameter->isDefaultValueAvailable()) { $binding = new OptionalBinding($key, $parameter->isDefaultValueConstant() ? new ConstantNameBinding($key, $parameter->getDefaultValueConstantName()) : new ConstantValueBinding($key, $parameter->getDefaultValue())); } return $binding; }