/** * 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 () { }); }
/** * 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)); }