# Swoft配置 Swoft的配置分为两类,环境配置和应用配置。 ### 环境配置 环境配置是用于不常改动的跟环境相关的配置参数,例如:运行模式、资源地址等等。 在项目的根目录有一个 `.env.example` 如果要使用则把文件修改成 `.env`,配置就可以在里面使用。 #### .env ```php APP_DEBUG = 0 SWOFT_DEBUG = 0 TEST_NAME = 测试名称 ``` #### .env 文件的使用 ```php env(string $key = null, $default = null) ``` * $key 配置参数key,如:`TEST_NAME` * $default 默认参数,当key不存在的时候返回default `env` 还有另一个功能,就是可以把操作系统的环境变量加载到内存里面。 ```php echo env('PATH'); ``` 输出操作系统的环境变量 `PATH` ### 应用配置 应用配置主要用于业务级别的配置 在 `app/bean.php` 添加如下配置,不添加默认就是应用根目录下的 `config` ```php 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 ```php return [ 'notify_url' => 'http://127.0.0.1/pay/notify', ]; ``` 这里的配置是全局的,在应用里面可直接使用。 ### 配置使用 #### 全局助手函数 `config()` ```php config(string $key = null, $default = null) ``` * $key 配置参数key,如:`config/pay.php` 获取方式就是 `config('pay.notify_url','')` * $default 默认参数,当key不存在的时候返回default ```php $notify_url = config('pay.notify_url',''); ``` #### 对象获取 ```php /** @var Config $config */ $config = \Swoft::getBean('config'); $notify_url = $config->get('pay.notify_url'); ``` #### 注解 在要使用配置的地方可以把配置注入到类的成员属性。 ```php use Swoft\Config\Annotation\Mapping\Config; /** * @Config("pay.notify_url") * @var mixed */ private $notify_url; ``` ### 不同环境相同配置 如果想要在不同环境配置不同的配置,例如在测试环境一套配置,生产环境一套配置,我们可以通过文件夹的方式来区分。 #### config/dev/db.php ```php return [ 'dsn' => 'mysql:dbname=lv;host=127.0.0.1' ]; ``` #### config/pro/db.php ```php return [ 'dsn' => 'mysql:dbname=lv1;host=127.0.0.1' ]; ``` #### app/bean.php ```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()` 全局函数获取配置设置到对应到配置项。