3

В чем разница между использованием env('APP_ENV'), config('app.env') или App::environment() для получения окружения приложения?В чем разница между использованием env ('APP_ENV'), config ('app.env') или App :: environment() для получения окружения приложения?

Я знаю, что env('APP_ENV') воля к $_ENV, config('app.env') считывает конфигурацию и App::environment() является абстракцией всех. И, на мой взгляд, преимущество даже в этом. Абстракция.

Я не знаю, если есть и другие различия, такие, как уровень Peformance или безопасности

+2

Там нет _real_ различия (как значение происходит от того же места: ваш * .env * файла), но, как правило, вы должны полагаться на 'конфигурации()' а чем 'env()' непосредственно, если вы хотите кэшировать свои значения конфигурации. –

ответ

0

Одна вещь, чтобы рассмотреть, возможно, фактор удобства прохождения строки в app()->environment(), чтобы подтвердить текущую среду.

// or App:: whichever you prefer. 
if (app()->environment('local', 'staging')) { 
    logger("We are not live yet!"); 
    Seeder::seedThemAll(); 
} else { 
    logger("We are LIVE!"); 
} 
0

У вас есть два одинаково хороших вариантов

if (\App::environment('production')) {...} 

или

if (app()->environment('production')) {...} 

приложение() -> среда() фактически используется Bugsnag, смотрите в документации here это говорит

По умолчанию мы будет автоматически обнаруживать среду приложения, вызвав функцию среды() на экземпляре приложения Laravel в.

4

Я просто ощущал это. Когда вы кешируете свой файл конфигурации, env() будет (иногда?) Работать неправильно. Итак, что я выяснил:

  1. Laravel рекомендует использовать только env() в файлах конфигурации. Используйте вспомогательный элемент config() в коде вместо env(). Например, вы можете вызвать config ('APP_ENV') в своем коде.
  2. Когда вы используете конфигурацию php artisan: кэшируйте все строки конфигурации, кэшированные каркасом, и любые изменения, внесенные вами в ваш .ENV-файл, не будут активны до тех пор, пока вы снова не запустите команду конфигурации php artisan: cache.

Отсюда: https://laracasts.com/discuss/channels/general-discussion/env-not-reading-variables-sometimes

UPDATE:

окр() звонки работать до тех пор, пока вы не используете PHP мастеровых конфигурации: кэш. Так что это очень опасно, потому что он часто будет работать во время разработки, но не будет работать на производстве.

Отсюда: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0

+0

Спасибо за это! Он также упоминается в официальных документах здесь: https://laravel.com/docs/5.4/configuration#configuration-caching –

 Смежные вопросы

  • Нет связанных вопросов^_^