Здравствуйте.
Давненько не работал с Symfony, не могу побороть один момент, всю голову уже сломал. Хочу в качестве теста реализовать следующее:
- Создать тестовый бандл в Symfony (src/TestBundle). Знаю бэд практик, но очень нужно :)
- Внутри бандла создать сервис в конструктор которого хочу передать скалярные 2 текстовых параметра
- В src/TestBundle/Resources/config/services.yaml описать контейнер (код приведу ниже)
- Создать тестовый экшен
- Инжектировать созданный сервис внутрь экшена и получить значения переменных
Теперь по коду:
src/TestBundle/Resources/config/services.yaml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
App\CurrencyConverterBundle\Service\TestService:
arguments:
$a: 'aaa'
$b: 'bbb'
src/TestBundle/Service/TestService
class TestService
{
public function __construct(
private string $a,
private string $b,
) {
}
public function getParams(): array
{
return [
'a' => $this->a,
'b' => $this->b,
];
}
}
src/TestBundle/Action/TestAction
class AddAction extends AbstractController
{
public function __construct(
private CurrencyApiService $currencyApiService
) {
}
public function __invoke(Request $request): Response
{
dd($this->currencyApiService->getParams());
}
}
src/TestBundle/DependencyInjection/TestExtension
class TestExtension extends Extension
{
/**
* @throws Exception
*/
public function load(array $configs, ContainerBuilder $container): void
{
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yaml');
}
}
С таким кодом вываливается критическая ошибка
В целом причину возникновения ошибки понимаю - симфони не понимает откуда брать эти переменные (хотя вроде бы в конфиге их привязал). Если бы "размазал" функционал по всему приложения можно было бы в config/services.yaml через bind прописать.
А тут ни в какую((( Пробовал ещё другие варианты описания конфига, в целом уже от безысходности, но также безрезультатно.
services:
App\CurrencyConverterBundle\Service\TestService:
arguments:
- 'aaa'
- 'bbb'
services:
App\CurrencyConverterBundle\Service\TestService:
arguments:
'aaa'
'bbb'
Будьте добры объясните, как пофиксить эту ошибку. Попытки погуглить - безрезультатны. Разве что часто встречал, рекомендацию внутри приложения не создавать бандлы...нууу очень надо :)
Буду признателен за помощь и любой совет!