Swoft 2.X配置


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.phpenv 配置是在 config 對應的目錄,例如:env 是 dev 那么對應的文件就是 config/dev/db.php

如果想用 config 文件夾里面的配置在 app/bean.php 生效,可以在 app/bean.php 使用 config() 全局函數獲取配置設置到對應到配置項。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM