/**
  * Set dependency value by reflection
  *
  * @param ParameterDefinition $parameterDefinition
  * @param \ReflectionParameter $reflectionParameter
  * @throws \InvalidArgumentException
  * @throws ReferenceNotImplementsException
  */
 public function setDependencyByReflection(ParameterDefinition $parameterDefinition, \ReflectionParameter $reflectionParameter)
 {
     // If default value available
     if ($reflectionParameter->isDefaultValueAvailable()) {
         // There is a constant
         if ($reflectionParameter->isDefaultValueConstant()) {
             $parameterDefinition->setDependency(new ConstantReference($reflectionParameter->getDefaultValueConstantName()));
         } else {
             // There is some php types
             $parameterDefinition->setDependency(CollectionReference::convertValueToReference($reflectionParameter->getDefaultValue()));
         }
         // There is class dependency
     } elseif ($this->checkIfTypeHingIsClass($parameterDefinition)) {
         $class = (string) $parameterDefinition->getTypeHint();
         $parameterDefinition->setDependency(new ClassReference($class));
     }
 }
 public function testConvertValueToReferenceWrongType()
 {
     $this->expectException(ReferenceNotImplementsException::class);
     CollectionReference::convertValueToReference(function () {
     });
 }
예제 #3
0
 /**
  * Create collection item from php type
  *
  * @param $key
  * @param $value
  * @return CollectionItem
  * @throws ReferenceNotImplementsException
  * @throws \InvalidArgumentException
  */
 public static function create($key, $value)
 {
     return new CollectionItem(CollectionReference::convertValueToReference($key), CollectionReference::convertValueToReference($value));
 }