Как внедрить сервис в контекст функции 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);
}
}