Как запустить приложение в Zend / MVC с SerciceManager - PullRequest
0 голосов
/ 21 октября 2019

У меня проблема с внедрением зависимостей в MVC / Console с использованием фабрики

Я создал фабрики

public function __invoke(ContainerInterface $container, $requestedName, 
array $options = null)
{
    return new BaseController($container->get(\Application\Controller\Test::class));
}

Я вставил в application.config.php

return  [     'service_manager' => [
    'factories' => [
        BaseController::class => BaseControllerFactory::class       ],

]]

и я запускаю свое приложение вот так

Application::init($appConfig)->run()

Я также повторил $appConfig['service_manager'] и результат был:

array(10) {
'factories' =>
array(1) {
'Application\Controller\BaseController' =>
string(44) "Application\Controller\BaseControllerFactory"
 }

Когда я запускаю свое приложение и пытаюсь нажатьКонтроллер консоли сообщает:

===================================================================== Приложение выдало исключение! ====================================================================== ArgumentCountError Слишком мало аргументов для функции Application \ Controller \ BaseController :: __ construct (), 0 передано в ... \ skeleton \ vendor \ zendframework \zend-servicemanager \ src \ Factory \ Invokabl eFactory.php в строке 30 и ожидается ровно 1

1 Ответ

0 голосов
/ 21 октября 2019

Если кто-то найдет ту же проблему, решение простое. На фабричном разделе массива 'service_manager' я забыл упомянуть, что класс Test не имеет зависимостей, поэтому я должен был написать

Test::class => InvokableFactory
...