Пример #1
0
 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;
 }
Пример #2
0
 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;
 }