9 declare(strict_types=1);
13 use Interop\Container\ContainerInterface;
15 use ReflectionParameter;
16 use Zend\Console\Adapter\AdapterInterface as ConsoleAdapterInterface;
17 use Zend\Filter\FilterPluginManager;
18 use Zend\Hydrator\HydratorPluginManager;
19 use Zend\InputFilter\InputFilterPluginManager;
20 use Zend\Log\FilterPluginManager as LogFilterManager;
21 use Zend\Log\FormatterPluginManager as LogFormatterManager;
22 use Zend\Log\ProcessorPluginManager as LogProcessorManager;
23 use Zend\Log\WriterPluginManager as LogWriterManager;
24 use Zend\Serializer\AdapterPluginManager as SerializerAdapterManager;
25 use Zend\ServiceManager\AbstractFactoryInterface;
26 use Zend\ServiceManager\Exception\ServiceNotFoundException;
27 use Zend\ServiceManager\ServiceLocatorInterface;
28 use Zend\Stdlib\DispatchableInterface;
29 use Zend\Validator\ValidatorPluginManager;
90 ConsoleAdapterInterface::class =>
'ConsoleAdapter',
91 FilterPluginManager::class =>
'FilterManager',
92 HydratorPluginManager::class =>
'HydratorManager',
93 InputFilterPluginManager::class =>
'InputFilterManager',
94 LogFilterManager::class =>
'LogFilterManager',
95 LogFormatterManager::class =>
'LogFormatterManager',
96 LogProcessorManager::class =>
'LogProcessorManager',
97 LogWriterManager::class =>
'LogWriterManager',
98 SerializerAdapterManager::class =>
'SerializerAdapterManager',
99 ValidatorPluginManager::class =>
'ValidatorManager',
107 public function __invoke(ContainerInterface $container, $requestedName, array
$options =
null)
112 return new $requestedName();
115 $reflectionParameters = $constructor->getParameters();
117 if (empty($reflectionParameters)) {
118 return new $requestedName();
121 $parameters = array_map(
122 $this->resolveParameter($container->getServiceLocator(), $requestedName),
123 $reflectionParameters
126 return new $requestedName(...$parameters);
132 public function canCreate(ContainerInterface $container, $requestedName)
138 return in_array(DispatchableInterface::class, class_implements($requestedName),
true);
150 private function resolveParameter(ContainerInterface $container, $requestedName)
158 return function (ReflectionParameter $parameter) use ($container, $requestedName) {
159 if ($parameter->isArray()
160 && $parameter->getName() ===
'config' 161 && $container->has(
'config')
163 return $container->get(
'config');
166 if ($parameter->isArray()) {
170 if (! $parameter->getClass()) {
174 $type = $parameter->getClass()->getName();
177 if (! $container->has(
$type)) {
178 throw new ServiceNotFoundException(sprintf(
179 'Unable to create controller "%s"; unable to resolve parameter "%s" using type hint "%s"',
181 $parameter->getName(),
186 return $container->get(
$type);
201 return $this->
canCreate($serviceLocator, $requestedName);
215 return $this($serviceLocator, $requestedName);
__invoke(ContainerInterface $container, $requestedName, array $options=null)
createServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
canCreate(ContainerInterface $container, $requestedName)
if(!isset($_GET['name'])) $name