lmz/hyperf-config

An independent component that provides configuration container.

v2.2.1 2021-10-24 08:59 UTC

README

composer require lmz/hyperf-config

主要的目前是为了加载 config/autoload 带文件夹的配置,官方提供的配置文件只读取.php配置文件,如果有同名的文件就会被覆盖。

使用方法:

config/autoload/dependencies.php添加,其他用法与官方一样

\Hyperf\Contract\ConfigInterface::class => \Hyperf\TfConfig\ConfigFactory::class,

demo

config/autoload/demo/test.php 配置文件

return [
    'config' => [
        'db' => 'test',
    ],
];

官方结果:

'test' => [
    'config' => [
        'db' => 'test',
    ],
];

本项目结果:

[
    'demo' => [
        'test' => [
            'config' => [
                'db' => 'test',
            ],
        ],
    ],
]

使用环境变量

根目录下有.env文件

PHASE=dev

PHASE 可以自定义如dev publish production rd

PHASE=devconfig/autoload 下面有一个 database.php ,可以新建 config/autoload/ 新建dev/database.php文件夹,系统会优先读取 config/autoload/dev/database.php 配置。

项目目的

1、为什么不使用.env解决问题

就拿数据库配置来说,目前我们有5个数据库集群,使用.env管理,就只能写成env('DB_HOST_1', '127.0.0.1') env('DB_HOST_2', '127.0.0.1')等,都写在.env里面会非常多配置

2、为什么不使用配置系统

新项目目前没有Apollo 阿里云 ACM 应用配置管理,开发环境调试比较麻烦

注意事项

  1. 应该在 .gitignore 里面加上 config/autoload/dev/* 目录,不允许提交到代码库上面
  2. 不允许子文件夹名与PHASE值同名,不会生效,如config/autoload/demo/dev/test.phpdev 文件夹不会被读取