lmz / hyperf-config
An independent component that provides configuration container.
Installs: 469
Dependents: 3
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 6
pkg:composer/lmz/hyperf-config
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: 2025-10-24 18:32:18 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文件夹不会被读取