Quelle est la différence entre utiliser env('APP_ENV')
, config('app.env')
et App::environment()
pour obtenir un environnement d'application?
Je sais que le env('APP_ENV')
va $_ENV
, config('app.env')
lit la configuration et App::environment()
est une abstraction de tout Et à mon avis, l'avantage est même celui-ci. Abstraction .
Je ne sais pas s’il existe d’autres différences, telles que le niveau de performance ou de sécurité
Je me sentais juste dessus. Lorsque vous mettez en cache votre fichier de configuration, env () ne fonctionnera pas (parfois?) Correctement. Donc ce que j'ai découvert:
À partir de là: https://laracasts.com/discuss/channels/general-discussion/env-not-reading-variables-sometimes
METTRE À JOUR:
Les appels env () fonctionnent tant que vous n'utilisez pas php artisan config: cache. C'est donc très dangereux car cela fonctionnera souvent pendant le développement mais échouera en production. Voir le guide de mise à niveau: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0
UPDATE Laravel 5.6:
Laravel recommande maintenant dans sa documentation d’utiliser
$environment = App::environment();
et décrit que env () consiste simplement à extraire des valeurs de .env dans des fichiers de configuration. Mais ceci est juste pour config ('app.env') et ne fonctionne pas pour d'autres variables comme config ('app.debug').
Une chose à considérer est peut-être le facteur de commodité de passer une chaîne de caractères à app()->environment()
afin de valider votre environnement actuel.
// or App:: whichever you prefer.
if (app()->environment('local', 'staging')) {
logger("We are not live yet!");
Seeder::seedThemAll();
} else {
logger("We are LIVE!");
}
Si vous utilisez la commande config:cache
lors du déploiement, vous devez vous assurer que vous appelez uniquement la fonction env
à partir de vos fichiers de configuration et non de n'importe où ailleurs dans votre application.
Si vous appelez env depuis votre application, il est vivement recommandé d'ajouter les valeurs de configuration appropriées à vos fichiers de configuration et d'appeler env depuis cet emplacement, ce qui vous permettra de convertir vos appels env
en appels de configuration.
Ajoutez une option de configuration env à votre fichier de configuration app.php
qui se présente comme suit:
'env' => env('APP_ENV', 'production'),
Vous avez deux bonnes options
if (\App::environment('production')) {...}
ou
if (app()->environment('production')) {...}
app () -> environment () est actuellement utilisé par Bugsnag , regardez dans la documentation ici il est écrit
Par défaut, nous détectons automatiquement l’environnement de l’application en appelant la fonction environment () sur l’instance d’application de Laravel.