Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * Filters plugin inheritance list for instances without plugins, and abstract/interface
  *
  * @param array $pluginInheritance
  * @return array
  */
 private function filterNullInheritance($pluginInheritance)
 {
     $filteredData = [];
     foreach ($pluginInheritance as $instance => $plugins) {
         if (is_null($plugins) || !$this->typeReader->isConcrete($instance)) {
             continue;
         }
         $pluginInstances = [];
         foreach ($plugins as $plugin) {
             if (in_array($plugin['instance'], $pluginInstances)) {
                 continue;
             }
             $pluginInstances[] = $plugin['instance'];
         }
         $filteredData[$instance] = $pluginInstances;
     }
     return $filteredData;
 }