lmz / hyperf-config
An independent component that provides configuration container.
v2.2.1
2021-10-24 08:59 UTC
Requires
- php: >=7.3
- hyperf/contract: ~2.2.0
- hyperf/utils: ~2.2.0
- psr/container: ^1.0|^2.0
- symfony/finder: ^5.0
Suggests
- hyperf/di: Allows using @Value annotation
- hyperf/event: Allows using @Value annotation
- hyperf/framework: Allows using @Value annotation
- vlucas/phpdotenv: Allows using enviroment value to override the config
This package is auto-updated.
Last update: 2024-12-24 16:12:39 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=dev
,config/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 应用配置管理
,开发环境调试比较麻烦
注意事项
- 应该在
.gitignore
里面加上config/autoload/dev/*
目录,不允许提交到代码库上面 - 不允许子文件夹名与
PHASE
值同名,不会生效,如config/autoload/demo/dev/test.php
,dev
文件夹不会被读取