Swoft的配置分為兩類,環境配置和應用配置。
環境配置
環境配置是用於不常改動的跟環境相關的配置參數,例如:運行模式、資源地址等等。
在項目的根目錄有一個 .env.example
如果要使用則把文件修改成 .env
,配置就可以在里面使用。
.env
APP_DEBUG = 0 SWOFT_DEBUG = 0 TEST_NAME = 測試名稱
.env 文件的使用
env(string $key = null, $default = null)
- $key 配置參數key,如:
TEST_NAME
- $default 默認參數,當key不存在的時候返回default
env
還有另一個功能,就是可以把操作系統的環境變量加載到內存里面。
echo env('PATH');
輸出操作系統的環境變量 PATH
應用配置
應用配置主要用於業務級別的配置
在 app/bean.php
添加如下配置,不添加默認就是應用根目錄下的 config
return [ ... 'config' => [ 'path' => __DIR__ . '/../config', ], ... ];
可配置項:
- path 自定配置文件路徑
- base 主文件名稱,默認 base (其他文件的數據都會按文件名為key合並到主文件數據中)
- type 配置文件類型,默認 php 同時也支持 yaml 格式
- parser 配置解析器,默認已經配置 php/yaml 解析器。
- env 配置當前環境比如 dev/test/pre/pro
應用配置是負責應用里面的配置管理,負責第三方sdk的配置信息和開發者定義的配置;應用配置的數據也是由一個bean管理的,如果我們想要配置第三方sdk或者新增自己定義的配置,只需要在 config
目錄添加對應文件返回一個數組就可以了。
config/pay.php
return [ 'notify_url' => 'http://127.0.0.1/pay/notify', ];
這里的配置是全局的,在應用里面可直接使用。
配置使用
全局助手函數 config()
config(string $key = null, $default = null)
- $key 配置參數key,如:
config/pay.php
獲取方式就是config('pay.notify_url','')
- $default 默認參數,當key不存在的時候返回default
$notify_url = config('pay.notify_url','');
對象獲取
/** @var Config $config */ $config = \Swoft::getBean('config'); $notify_url = $config->get('pay.notify_url');
注解
在要使用配置的地方可以把配置注入到類的成員屬性。
use Swoft\Config\Annotation\Mapping\Config; /** * @Config("pay.notify_url") * @var mixed */ private $notify_url;
不同環境相同配置
如果想要在不同環境配置不同的配置,例如在測試環境一套配置,生產環境一套配置,我們可以通過文件夾的方式來區分。
config/dev/db.php
return [ 'dsn' => 'mysql:dbname=lv;host=127.0.0.1' ];
config/pro/db.php
return [ 'dsn' => 'mysql:dbname=lv1;host=127.0.0.1' ];
app/bean.php
return [ ... 'config' => [ 'path' => __DIR__ . '/../config', 'env' => 'pro' ], 'db' => [ ... 'dsn' => config('db.dsn'), ... ], ... ];
這個配置使用的配置是 config/pro/db.php
; env
配置是在 config
對應的目錄,例如:env
是 dev
那么對應的文件就是 config/dev/db.php
如果想用 config
文件夾里面的配置在 app/bean.php
生效,可以在 app/bean.php
使用 config()
全局函數獲取配置設置到對應到配置項。