Нормально ли использовать параметры в вашем собственном коде из файла .env через переменную $ _ENV? Конечно, в контексте проекта, использующего Symfony 4.
У меня есть такой код:
//WebhookUrlBuilder.php
class WebhookUrlBuilder
{
private RouterInterface $router;
public function __construct(RouterInterface $router)
{
$this->router = $router;
if (PHP_SAPI === 'cli') {
$this->router->getContext()->setHost($_ENV['HOST_URL'])->setScheme($_ENV['URL_SCHEME']);
}
}
public function build(string $hash): string
{
return $this->router->generate(BotsController::WEBHOOK_URL_NAME, [
'hash' => $hash
], UrlGeneratorInterface::ABSOLUTE_URL);
}
}
Есть мнение, что использование переменной $ _ENV - это дурной вкус, и я должен поставить этипараметры через ParameterBag, например:
#services.yml
parameters:
host: '%env(HOST_URL)'
scheme: '%env(URL_SCHEME)'
//WebhookUrlBuilder.php
class WebhookUrlBuilder
{
private RouterInterface $router;
public function __construct(RouterInterface $router, ParameterBag $parameterBag)
{
$this->router = $router;
if (PHP_SAPI === 'cli') {
$this->router
->getContext()
->setHost($parameterBag->get('host'))
->setScheme($parameterBag->get('scheme'));
}
}
public function build(string $hash): string
{
return $this->router->generate(BotsController::WEBHOOK_URL_NAME, [
'hash' => $hash
], UrlGeneratorInterface::ABSOLUTE_URL);
}
}
Но я считаю, что это бесполезное дополнительное действие (копирование значений из переменных .env в paramteres в services.yml), которое не приносит никакой прибыли. Что ты думаешь?