關於Laravel 全域資料的處理

WBOY
發布: 2016-09-08 08:43:50
原創
1576 人瀏覽過

laravel中, 我們可能透過中間件來處理auth資訊, 也可能設計到一些業務邏輯的處理

這些資料在中間件中處理後, 應該存放到哪裡?
比方說userObject 這樣的對象, 又或者只是一個變量. 後續的邏輯(service層, model層, view層)都可能用到.
那在中間件中取得,處理後的資料, 應該放在哪裡. (一次請求中)

不使用框架時, 通常會隨便定義一個超級變量 在存放. MVC中似乎不太建議使用全局變量來處理. 那在laravel中, 通常是放在哪裡呢?

我知道可以存放在session app容器下. 但是感覺不是最佳的方案.

回覆內容:

laravel中, 我們可能透過中間件來處理auth資訊, 也可能設計到一些業務邏輯的處理

這些資料在中間件中處理後, 應該存放到哪裡?
比方說userObject 這樣的對象, 又或者只是一個變量. 後續的邏輯(service層, model層, view層)都可能用到.
那在中間件中取得,處理後的資料, 應該放在哪裡. (一次請求中)

不使用框架時, 通常會隨便定義一個超級變量 在存放. MVC中似乎不太建議使用全局變量來處理. 那在laravel中, 通常是放在哪裡呢?

我知道可以存放在session app容器下. 但是感覺不是最佳的方案.

中間件只是用來過濾請求/回應的管道,資料該存資料庫那就上Eloquent或直接用DB facade,該存session就存session......

存在記憶體中。例如目前用戶,當你呼叫Auth::user 或其他跟目前認證用戶有關的程式碼時,就可能會觸發對應的UserModel 去取用戶對象,如果本次request 中還沒有生成,就去從資料庫或快取中取然後一直存在本次請求的記憶體中。
所有其他的變數、provider、binding、依賴注入、別名等等都是這個邏輯。而且具有很靈活的加載方式,以提高效能。例如路由、配置的快取和加載,例如defer。

這套是基於 Laravel 的一個核心東西:容器(container)。官方文件都是一開始就講了這些理念,文件請見 Core Concepts

Laravel 可自訂的 bootstrap 啟動流程中,一般第一個就是載入 Application,這就是一個大容器。你可以在任意地方 dd(app()) 查看目前 app 中的資料載入情況。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!