Как внедрить сервис в контекст функции Behat в фреймворке Slim 4

Когда я ищу внедрение сервиса в контекст функции, я всегда нахожу расширения для symfony. Но мне нужно расширение или что-то еще, чтобы сделать это в Slim 4 framework.

Спасибо.

1 ответ

Решение

Я решил эту проблему с помощью трейта.

    // src/Application/Utility/ContainerInjection.php

    use DI\Container;
    use DI\ContainerBuilder;

    trait ContainerInjection
    {
        /**
         * @return Container
         */
        public function getContainer()
        {
            // To find project base path 
            // according to path where trait is found
            $path_main = __DIR__ . '/../../../';

            // Instantiate PHP-DI ContainerBuilder
            $containerBuilder = new ContainerBuilder();

            $settings = require $path_main . 'app/settings.php';
            $dependencies = require $path_main . 'app/dependencies.php';

            $settings($containerBuilder);
            $dependencies($containerBuilder);

            // Build PHP-DI Container instance
            return $containerBuilder->build();
        }
    }

Чтобы использовать эту черту в FeatureContext

    class FeatureContext implements Context
    {
        use ContainerInjection;

        private $myService;

        public function __construct()
        {
            $container = $this->getContainer();
            $this->myService = $container->get(MyService::class);
        }
     }
Другие вопросы по тегам