@guillermo Допустим у Вас в .env установлена переменная TEST_PARAM в Symfony:
1
|
TEST_PARAM=test
|
Вы можете установить значение параметра в config/services.yaml
1 2 |
parameters: app.test_param: '%env(TEST_PARAM)%' |
И теперь в контроллере Вы можете легко получить значение через:
1
|
$this->getParameter('app.test_param'); |
Если Вам нужно передать данный параметр в Ваш сервис, то можете сделать вот так:
1 2 3 |
locales: class: AppBundle\Util\Locales arguments: ["%app.test_param%"] |
И потом в конструкторе Locales.php можно получить это значение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php namespace AppBundle\Util; class Locales { /** * @var string */ private $testParam; public function __construct($testParam) { $this->testParam = $testParam; } // ... } |
@guillermo
Чтобы получить значение из файла .env
в Symfony, вы можете использовать сервис env
(класс SymfonyComponentDotenvDotenv
). Вот пример кода, который использует этот сервис:
1 2 3 4 5 6 |
use SymfonyComponentDotenvDotenv; $dotenv = new Dotenv(); $dotenv->load(__DIR__.'/../.env'); $database_password = $_ENV['DATABASE_PASSWORD']; |
В этом примере мы создаем экземпляр класса Dotenv
, загружаем файл .env
с помощью метода load()
и затем получаем значение переменной DATABASE_PASSWORD
из массива $_ENV
.
Обратите внимание, что этот код должен быть выполнен до того, как будет создан контейнер сервисов (в файле config/bootstrap.php
). Если вы хотите использовать этот сервис в сервис-провайдере или в контроллере, вам нужно будет инжектировать его через конструктор.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
use SymfonyComponentDotenvDotenv; class MyController { private $dotenv; public function __construct(Dotenv $dotenv) { $this->dotenv = $dotenv; } public function index() { $this->dotenv->load(__DIR__.'/../.env'); $database_password = $_ENV |