env('APP_ENV')
、config('app.env')
、またはApp::environment()
を使用してアプリ環境を取得する場合の違いは何ですか?
env('APP_ENV')
は_$_ENV
_になり、config('app.env')
は設定を読み取り、App::environment()
はすべての抽象化であることを知っています。そして私の意見では、利点はこれですらあります。 抽象化。
パフォーマンスやセキュリティのレベルなど、他の違いがあるかどうかはわかりません
2019年の短期間で最新:
-設定ファイルでのみenv()を使用します
-環境のチェックにApp :: environment()を使用します(.envのAPP_ENV)。
-他のすべてのenv変数にconfig( 'app.var')を使用します。 config( 'app.debug')
-独自のENV変数用に独自の構成ファイルを作成します。例:
。envで:
MY_VALUE=foo
config app/myconfig.phpの例
return [
'myvalue' => env('MY_VALUE', 'bar'), // 'bar' is default if MY_VALUE is missing in .env
];
コードにアクセスします。
config('myconfig.myvalue') // will result in 'foo'
説明と履歴:
私はちょうどそれを感じました。構成ファイルをキャッシュすると、env()は(時々?)正しく動作しません。だから私が見つけたもの:
ここから: https://laracasts.com/discuss/channels/general-discussion/env-not-reading-variables-sometimes
UPDATE:
env()呼び出しは、php artisan config:cacheを使用しない限り機能します。そのため、開発中に機能することが多いため、本番環境では失敗しますため、非常に危険です。アップグレードガイドを参照してください: https://laravel.com/docs/5.2/upgrade#upgrade-5.2.
UPDATE Laravel 5.6:
Laravelでは、 ドキュメント での使用を推奨しています。
$environment = App::environment();
describes env()は、config( 'app.env')やconfig( 'app.debug')などの構成ファイルの.envから値を取得するだけです。
展開中にconfig:cache
コマンドを使用している場合は、アプリケーションの他の場所からではなく、構成ファイル内からのみenv
関数を呼び出していることを確認する必要があります。
アプリケーション内からenvを呼び出す場合、適切な構成値を構成ファイルに追加し、代わりにその場所からenvを呼び出して、env
呼び出しをconfig呼び出しに変換できるようにすることを強くお勧めします。
次のようなapp.php
構成ファイルにenv構成オプションを追加します。
'env' => env('APP_ENV', 'production'),
考慮すべき1つのことは、おそらく現在の環境を検証するために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!");
}
12ファクター方法論 アプリケーションには、2種類の構成値が含まれます。
./config/
_フォルダーに保存されます。このタイプでは、通常、ユーザーが変更してはならないアプリケーションで使用される技術的な最適/適切な値を保存します時間。たとえば、最適な画像圧縮レベル、接続タイムアウト、セッションの有効期限など。.env
_ファイルに格納されるexternal(ただし、git repoには格納しないでください。ただし、詳細情報を含むサンプル値を持つ_.env.example
_はrepoに格納できます)。このタイプでは、通常、ローカル環境に依存するいくつかの重要な/保護された値を保存します。パスワード、デバッグモード、データベースアドレスなど.Laravelはこれに便利なアプローチを提案します
config(...)
ヘルパーのみを使用します(したがって、このレベルのプログラマーは、どの構成値が内部で、どの構成値が外部であるかを知る必要はありません)env(...)
ヘルパーを使用して設定する必要があります。 config/app.php 'debug' => env('APP_DEBUG', false)
で