Мне нужно добавить, а затем из контекста получить дополнительные параметры / конфигурацию из файла behat.yml.
Behat не позволяет мне добавлять случайные параметры в файл behat.yml, поэтому я создал новое собственное расширение. Это расширение позволяет мне передавать определенные значения конфигурации
extensions:
App\Behat\DevToolsExtension:
api_url: "https://api.example.com"
Итак, теперь behat не жалуется на новую конфигурацию в файле behat.yml.
Теперь я застрял. Как я могу получить эту конфигурацию из моего расширения во время выполнения?
Я устанавливаю существующие параметры в своем расширении в методе загрузки общедоступной функции (ContainerBuilder $ container, array $ config) следующим образом:
$container->setParameter($configKey . $key, $config[$key]);
Опять же, есть ли способ получить этот объект ContainerBuilder или объект DevToolsExtension в контексте?
Редактировать
Решением было создать сервисный контейнер и передать в него поведение ContainerBuilder следующим образом:
class AppExtension implements ExtensionInterface
{
// ...
public function load(ContainerBuilder $container, array $config)
{
$configKey = $this->getConfigKey() . '.';
foreach ($this->keys as $key) {
$keyValue = $configKey . $key;
$container->setParameter($keyValue, $config[$key]);
}
$this->getServiceLocator()->setBehatContainer($container);
}
А затем используйте локатор сервисов для получения параметров конфигурации.
$value = $this->getBehatContainer()->getParameter($key);