一、laravel實現的生產環境跟開發環境配置分離
php
一般咱們會把配置文件所須要的參數放在/config下面的目錄中,這個文件夾下面的全部文件都會自動加載,咱們使用config(文件名+」.」+配置項)的方式進行訪問,可是直接修改config下面文件的配置會很麻煩,例如咱們生產環境跟開發環境不一樣,這就比較麻煩了,可laravel很便捷的給咱們解決了這個方法,咱們開發環境在根目錄配置.env文件,config裏面的配置都經過讀取.env的方式來實現配置的自由切換,好了,咱們完成了一個比較方便的事情laravel
二、如何實現一些比較固定參數的後臺配置json
咱們平常開發系統一些不是常常會變的東西,比方說網站設置,郵箱配置,第三方登陸配置。這些配置咱們但願經過後臺修改後咱們的程序可以像讀配置文件同樣來讀,省去了咱們每初始化一套系統都得手動去修改參數配置(假設咱們系統是一套一套的賣給他人的)。跨域
這個時候中間件用上了,咱們能夠創建一箇中間件,例如app/Http/Middleware/ResetConfig.php,而後把這個中間件放到app/Http/Kernel.php中的protected $middleware數組裏面,咱們就能夠實現寫入的配置文件讀取到config中數組
ResetConfig.php
app
public function handle($request, Closure $next) { $json_datas = $arr_datas = null; // email $file_path = storage_path('app/email.data'); if(file_exists($file_path)) { $json_datas = file_get_contents($file_path); $json_datas && $arr_datas = json_decode($json_datas, true); $arr_datas && config(['mail' => array_merge(config('mail'), $arr_datas)]); } $json_datas = $arr_datas = null; // msg $file_path = storage_path('app/msg.data'); if(file_exists($file_path)) { $json_datas = file_get_contents($file_path); $json_datas && $arr_datas = json_decode($json_datas, true); $arr_datas && config(['msg' => $arr_datas]); } return $next($request); }
Kernel.php網站
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \App\Http\Middleware\ResetConfig::class, \App\Http\Middleware\Cors::class, //解決跨域 ];
這樣咱們在開發程序的時候只用把文件寫入到app/email.data中就能夠實現了,咱們的其餘程序經過config方法就能夠及時訪問到咱們修改的配置了。
code