App::environment()使用vs app()->environment()vsconfig('app.env')檢查環境有什么區別?我假設前兩個是完全相同的東西,但是那些 vs usingconfig('app.env')呢?
我可以看到前兩個回傳整個服務容器實體,所以性能更差,但更安全還是什么?我正在閱讀人們建議僅將config()其用于您自己的配置變數和任何其他非 env 的配置變數。試圖找出原因。
謝謝!
uj5u.com熱心網友回復:
App::environment()并且app()->environment()是完全相同的東西。App外觀和app()輔助函式都只是訪問應用程式容器的快捷方式。
在 Web 背景關系中(從瀏覽器訪問您的頁面),App::environment()方法和config('app.env')函式將回傳相同的值。
在 cli 背景關系(artisan 命令、排隊作業等)中,App::environment()方法和config('app.env')函式可能回傳不同的值。如果正在運行的命令使用--env引數(例如:)執行--env=testing,則該App::environment()方法將回傳實際檢測到的環境(“測驗”),而該config('app.env')函式將繼續回傳組態檔中定義的環境。
需要考慮的兩個額外事項:
該
environment()方法是公共 api 的一部分。這意味著唯一可能發生重大變化的是主要版本。app.env配置值不是公共 api 的一部分。如果他們愿意,Laravel 可以在任何時候改變它,即使是在一個小版本上。我懷疑他們永遠不會,但他們沒有公開承諾。該
environment()方法采用可選引數來添加一些語法糖來測驗您的當前環境。如果您傳遞引數,如果您在任何提供的環境中,該方法將回傳一個布林值,而不是回傳一個帶有當前環境名稱的字串。這些引數也被視為正則運算式搜索:$isTesting = App::environment('test', 'testing', 'testarossa') // or $isTesting = App::environment('test*')(在運行正則運算式之前,“*”被替換為“.*”)
uj5u.com熱心網友回復:
App::environment()
使用 Facade 來獲取環境,即Illuminate\Foundation\Application.
app()
使用輔助函式回傳\Illuminate\Container\Container::getInstance(). environment()在這個 Container 實體的方法中。
resolve()
是一個別名,app()但需要一個引數,例如resolve('config')or resolve(Application::class)。
app()->make(Application::class)
使用容器來決議應用程式。這等于app(Application::class)。
Config::get('app.env')
使用\Illuminate\Config\Repository.
config('app.env')
使用輔助函式呼叫app()來決議配置。您應該只在使用env()位于config/.
public function __construct(Config $config)
使用依賴注入來決議 Config。
回答
引導應用程式時,配置變數使用 Config 加載到此應用程式中。
所以 Container 使用 Config 來加載變數。兩者都是單例,因此呼叫它們并不會真正影響性能。
您選擇哪種解決方案有時取決于用例,主要取決于偏好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/440032.html
下一篇:將CSS鏈接到HTML
