/** * @param Collection $definitionCollection * @param array $virtualTypes * @return array */ private function getResolvedVirtualConstructorArgumentsMap(Collection $definitionCollection, array $virtualTypes) { $getResolvedConstructorArgumentsMap = []; foreach ($virtualTypes as $virtualType => $concreteType) { $getResolvedConstructorArgumentsMap[] = [$virtualType, $definitionCollection->getInstanceArguments($concreteType), $this->getResolvedArguments($definitionCollection->getInstanceArguments($concreteType))]; } return $getResolvedConstructorArgumentsMap; }
public function testGetInstanceArguments() { $this->model->addDefinition(self::INSTANCE_1, $this->getArgument()); $this->assertEquals($this->getArgument(), $this->model->getInstanceArguments(self::INSTANCE_1)); }
/** * Returns constructor with defined arguments * * @param DefinitionsCollection $definitionsCollection * @param ConfigInterface $config * @return array|mixed * @throws \ReflectionException */ private function getConfigForScope(DefinitionsCollection $definitionsCollection, ConfigInterface $config) { $constructors = []; $argumentsResolver = $this->argumentsResolverFactory->create($config); foreach ($definitionsCollection->getInstancesNamesList() as $instanceType) { if (!$this->typeReader->isConcrete($instanceType)) { continue; } $constructor = $definitionsCollection->getInstanceArguments($instanceType); $constructors[$instanceType] = $argumentsResolver->getResolvedConstructorArguments($instanceType, $constructor); } foreach (array_keys($config->getVirtualTypes()) as $instanceType) { $originalType = $config->getInstanceType($instanceType); if (!$definitionsCollection->hasInstance($originalType)) { if (!$this->typeReader->isConcrete($originalType)) { continue; } $constructor = $this->classReaderDecorator->getConstructor($originalType); } else { $constructor = $definitionsCollection->getInstanceArguments($originalType); } $constructors[$instanceType] = $argumentsResolver->getResolvedConstructorArguments($instanceType, $constructor); } return $constructors; }