#laravel #laravel-5 #environment-variables
#laravel #laravel-5 #переменные среды
Вопрос:
Я создаю свою собственную команду artisan и хочу использовать переменные ENV, но когда я использую $_ENV['VariableName']
, я получаю ошибку.
local.ERROR: Undefined index: VariableName
Тот же код отлично работает в контроллере и ошибка, поскольку этот не генерируется.
Я создаю свои команды с php artisan make:command CommandName
Как я могу начать использовать переменные ENV там? Спасибо! Я хочу использовать переменные в частной функции, которая находится внутри:
class CommandName extends Command
но за пределами public function handle()
Ответ №1:
Поскольку .env
файл не помещается в репозиторий, лучшим подходом является использование вместо него файлов конфигурации. Итак, в config
каталоге создайте свой пользовательский файл, например: custom.php
со следующим содержимым:
<?php
return [
'variable' => env('VARIABLE_NAME', 'DEFAULT_VALUE')
];
и в вашем .env
вы должны поместить:
VARIABLE_NAME=something
Затем, чтобы использовать его, вы используете config('custom.variable');
Комментарии:
1. Для любых
env
иconfig
значений, возвращающих null внутри команд, это наилучший подход
Ответ №2:
Вы можете использовать помощник Laravel для доступа к переменным среды с помощью чего-то вроде этого:
env('VariableName')
вы также можете указать значение по умолчанию, если переменная среды не установлена
env('VariableName', 'myName')
Комментарии:
1. Спасибо, это сделало свое дело. Я не знаю, как я пропустил это в документации!
2. @Moritz Не могли бы вы уточнить, какой вспомогательный класс должен быть
use
общим для того, чтобыenv
функции можно было оценивать в файлах командного класса Artisan? Вычисляется без указания каких-либо значений по умолчанию… В ссылке на документ, которую вы добавили в ответе, просто говоритсяMiscellaneous
, но нигде конкретно не упоминается класс, который нужно включить…