• 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 SwoftConfigAnnotationMappingConfig;
    /**
    * @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() 全局函数获取配置设置到对应到配置项。

  • 相关阅读:
    ZSSR
    分享mysql db 分区分表的shell
    oracle12c的CDB与PDB
    nodejs连接redis
    webservice 访问 网络共享文件夹 权限问题的解决方案
    闭包后感
    简单记录几个wpf学习上的问题[ObservableQueue]
    源码分析之Iterable&Collection(一)
    数据结构之树(三)
    数据结构之哈希表(二)
  • 原文地址:https://www.cnblogs.com/huxuanjing/p/12100973.html
Copyright © 2020-2023  润新知