• 配置
  • 数据格式
  • 使用
    • 函数
    • 注解
    • 对象

    配置

    可以在 bean.php 文件配置应用配置参数

    1. return [
    2. 'config' => [
    3. 'path' => __DIR__ . '/../config',
    4. ],
    5. ];
    • path 自定配置文件路径
    • base 主文件名称,默认 base
    • type 配置文件类型,默认 php 同时也支持 yaml 格式
    • parser 配置解析器,默认已经配置 php/yaml 解析器。
    • env 配置当前环境比如pro/pre/….

    数据格式

    配置目录所有配置文件会解析成一个数组,但是不会递归合并数据,只会合并当前目录文件数据,以它的文件名称为数组 key 进行合并数组。比如 config 目录配置文件如下

    1. |-- base.php
    2. |-- data.php
    3. `-- pro
    4. |-- base.php
    5. `-- data.php

    只会解析当前目录文件数据,不会递归解析数据。当前使用 env 配置时,环境目录里面的配置信息会覆盖最外层文件名称相同的数据。提醒:配置文件里面可以使用 env()函数读取环境配置。

    base.php

    1. return [
    2. 'key' => 'value'
    3. ];

    data.php

    1. return [
    2. 'dkey' => [
    3. 'dvalue'
    4. ],
    5. 'key' => 'value'
    6. ];

    /pro/base.php

    1. return [
    2. 'key' => 'valuePro'
    3. ];

    /pro/data.php

    1. return [
    2. 'key' => 'valuePro'
    3. ];

    如上配置文件,当不配置 env 参数,合并的数据格式如下:

    1. return [
    2. 'key' => 'value',
    3. 'data' => [
    4. 'dkey' => [
    5. 'dvalue'
    6. ],
    7. 'key' => 'value'
    8. ]
    9. ];

    当配置 env=pro 参数,合并的数据格式如下:

    1. return [
    2. 'key' => 'valuePro',
    3. 'data' => [
    4. 'dkey' => [
    5. 'dvalue'
    6. ],
    7. 'key' => 'valuePro'
    8. ]
    9. ];

    使用

    框架提全局函数、注解、config 对象多种方式,使用应用配置数据。

    函数

    全局函数使用 config()

    1. config(string $key = null, mixed $default = null):mixed
    • key 配置参数 key,子数组可以使用 . 分割,比如上面的例子 data.dkey 可以获取到 ["dvalue"], 当key=null 获取所有配置参数
    • default 默认参数,如果 key 参数不存在,返回默认值,默认值可以是任意类型

    注解

    通过容器使用注解的方式,注入配置到属性值。

    1. use Swoft\Bean\Annotation\Mapping\Bean;
    2. use Swoft\Config\Annotation\Mapping\Config;
    3. /**
    4. * @Bean()
    5. */
    6. class Demo
    7. {
    8. /**
    9. * @Config("data.dkey")
    10. */
    11. private $dvalue = [];
    12. // ...
    13. }

    此例子和上面功能一样,都是读取相同的数据,两种不同的方式。

    使用注解,一定要保证类是一个bean对象(通过其它注解注入到容器)

    对象

    如果上面两种方式还不能满足你的业务需求,你可以从容器里面获取配置对象,里面自带很多方式操作配置数据。

    1. use Swoft\Bean\BeanFactory;
    2. $config = BeanFactory::getBean('config');

    config 对象常用方法

    • get(string $key, $default = null) 获取参数
    • offsetGet($key) 获取参数
    • ….