Как использовать переменные ENV в командах Artisan в Laravel 5.8?

#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')

Помощники Laravel Docs 5.8

Комментарии:

1. Спасибо, это сделало свое дело. Я не знаю, как я пропустил это в документации!

2. @Moritz Не могли бы вы уточнить, какой вспомогательный класс должен быть use общим для того, чтобы env функции можно было оценивать в файлах командного класса Artisan? Вычисляется без указания каких-либо значений по умолчанию… В ссылке на документ, которую вы добавили в ответе, просто говорится Miscellaneous , но нигде конкретно не упоминается класс, который нужно включить…