Swoft2 配置詳解

wike發表於2019-11-30

更多資料請關注 swoft 系列教程、
小白系列教程 定期連載

基本功能介紹

配置項是隻讀的,不能動態修改.所以不要嘗試著動態修改配置

Swoft2 的配置分為兩類,環境配置和應用配置。

  • env 一般配置一些和環境相關的一些引數,比如執行模式、資源地址

  • config 一般用於配置應用級別的配置以及業務級別的配置

簡單的示例

環境配置說明

在專案的根目錄有一個 .env.example 如果要使用則把檔案修改成 .env,配置就可以在裡面使用。

根目錄下 .env檔案,內容如下

  1. APP_DEBUG = 0
  2. SWOFT_DEBUG = 0
  3. env = test

這裡的 env 屬性定義 在後面會用到.用於區分是什麼環境,這裡定義了測試環境.

環境配置的使用

  1. env(string $key = null, $default = null)
  • $key 配置引數key,如:APP_DEBUG

  • $default 預設引數,當key不存在的時候返回default

env 還有另一個功能,就是可以把作業系統的環境變數載入到記憶體裡面。

  1. echo env('PATH');

輸出作業系統的環境變數 PATH

應用配置說明

應用配置主要用於業務級別的配置

在 app/bean.php 新增如下配置,不新增預設就是應用根目錄下的 config

  1. return [
  2. ...
  3. 'config' => [
  4. 'path' => __DIR__ . '/../config',
  5. 'env' => env('env',"dev") //這個我們在環境變數裡宣告瞭,用於不同環境載入不同的配置檔案
  6. ],
  7. ...
  8. ];

可配置項:

  • path 自定配置檔案路徑

  • env 配置當前環境比如 test

應用配置是負責應用裡面的配置管理,負責第三方sdk的配置資訊和開發者定義的配置;應用配置的資料也是由一個bean管理的,如果我們想要配置第三方sdk或者新增自己定義的配置,只需要在 config 目錄新增對應檔案返回一個陣列就可以了。

這裡的配置是全域性的,在應用裡面可直接使用。

config/pay.php

  1. return [
  2. 'notify_url' => 'http://127.0.0.1/remote',
  3. ];

獲取配置的方式有三種,我們這裡介紹兩種本人推薦的,全域性助手函式和註解,物件獲取不在此介紹,如果需要了解請檢視官方文件

配置使用

全域性助手函式 config()

  1. config(string $key = null, $default = null)
  • $key 配置引數key,如:config/pay.php 獲取方式就是 config(‘pay.notify_url’,’’)

  • $default 預設引數,當key不存在的時候返回default

註解

在要使用配置的地方可以把配置注入到類的成員屬性。

  1. use Swoft\Config\Annotation\Mapping\Config;
  2. /**
  3. * @Config("pay.notify_url")
  4. * @var mixed
  5. */
  6. private $notify_url;

不同環境相同配置

需要在 bean.php 裡的 config 屬性設定了 env屬性,來定義載入哪些配置

如果想要在不同環境配置不同的配置,例如在測試環境一套配置,生產環境一套配置,我們可以通過資料夾的方式來區分。

測試環境

config/test/time.php

  1. return [
  2. 'date' => '2019-11-28 for test'
  3. ];

開發環境

config/dev/time.php

  1. return [
  2. 'date' => '2019-11-28 for dev'
  3. ];

獲取上面的配置的方式 config('time.date')

這個配置使用的配置是 config/dev/time.php; env 配置是在 config 對應的目錄,例如:env 是 test 那麼對應的檔案就是 config/test/time.php

在控制器裡簡單使用

控制檯輸出

wike2019 個人部落格:http://8code.net/