laravel後台可修改配置自動載入

來源:互聯網
上載者:User
1、laravel實現的生產環境跟開發環境配置分離

通常我們會把設定檔所需要的參數放在/config下面的目錄中,這個檔案夾下面的所有檔案都會自動載入,我們使用config(檔案名稱+”.”+配置項)的方式進行訪問,但是直接修改config下面檔案的配置會很麻煩,例如我們生產環境跟開發環境不同,這就比較麻煩了,可laravel很便捷的給我們解決了這個方法,我們開發環境在根目錄配置.env檔案,config裡面的配置都通過讀取.env的方式來實現配置的自由切換,好了,我們完成了一個比較方便的事情

2、如何?一些比較固定參數的後台配置

我們日常開發系統一些不是經常會變的東西,比方說網站設定,郵箱配置,第三方登入配置。這些配置我們希望通過後台修改後我們的程式能夠像讀設定檔一樣來讀,省去了我們每初始化一套系統都得手動去修改參數配置(假設我們系統是一套一套的賣給他人的)。

這個時候中介軟體用上了,我們可以建立一個中介軟體,例如app/Http/Middleware/ResetConfig.php,然後把這個中介軟體放到app/Http/Kernel.php中的protected $middleware數組裡面,我們就可以實現寫入的設定檔讀取到config中

ResetConfig.php

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方法就可以及時訪問到我們修改的配置了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.