/**
  * Returns a parameter's type or NULL if the given parameter does not exist
  *
  * @param  lang.reflect.Parameter $param
  * @return lang.Type
  */
 private function paramType($param)
 {
     return $param ? $param->getTypeRestriction() ?: $param->getType() : null;
 }
Example #2
0
 /**
  * Retrieve bound value for injection
  *
  * @param  var $inject The annotation
  * @param  lang.reflect.Routine $routine
  * @param  lang.reflect.Parameter $param
  * @return var
  * @throws inject.ProvisionException
  */
 private function param($inject, $routine, $param)
 {
     $binding = $this->get(isset($inject['type']) ? $inject['type'] : ($param->getTypeRestriction() ?: $param->getType()), isset($inject['name']) ? $inject['name'] : null);
     if (null === $binding) {
         if ($param->isOptional()) {
             return $param->getDefaultValue();
         } else {
             throw new ProvisionException(sprintf('Unknown injection type %s%s for %s\'s %s() parameter %s', isset($inject['type']) ? $inject['type'] : $param->getTypeName(), isset($inject['name']) ? ' named "' . $inject['name'] . '"' : '', $routine->getDeclaringClass()->getName(), $routine->getName(), $param->getName()));
         }
     }
     return $binding;
 }