formigone / php-config
此包最新版本(v0.0.1)没有可用的许可证信息。
v0.0.1
2016-10-08 00:00 UTC
This package is not auto-updated.
Last update: 2024-09-28 20:40:46 UTC
README
本项目是对 node-config 的松散移植。我只实现了足够的功能,以帮助我在现有项目中开始使用。
它做什么?
此包的目标是帮助您管理按环境分开的配置文件,但作为单个对象使用。
如何工作
假设您的应用程序存在于三个环境中:开发
、预发布
和生产
。每个环境都有自己的唯一配置,但三者共享一些共同的配置。
作为一名有组织的开发者,您将在项目的某个位置创建一个名为 config
的目录,其中将存储以下文件
/project /config default.json development.json stage.json production.json // config/default.json { "appVersion": "1.0.0", "app": { "views": { "cache": false } } } // config/development.json { "db": { "username": "root", "password": "", "host": "localhost" } } // config/default.json { "db": { "username": "stage-user", "password": "stage-password", "host": "stage-db" } } // config/default.json { "db": { "username": "secure-user", "password": "secure-password", "host": "super-cluster" }, "app": { "views": { "cache": true } } }
然后您将有一个针对您所在环境的单个配置对象,其中 default.json
和特定于环境的 .json
对象合并在一起,默认值被环境值覆盖(使用浅合并)。
$env = getenv('APP_ENV'); $configPath = __DIR__ . '/config'; $config = new Formigone\Config($env, $configPath); $appVersion = $config->get('appVersion'); $db = $config->get('db'); $shouldCacheViews = $config->get('app.views.cache');
为什么要重新发明轮子?
因此,此项目本质上模仿了 ZF1的Zend_Config,它允许继承配置。为什么使用这个而不是?
- 为什么使用JSON?
- 这样配置就可以在PHP和JavaScript/Node.js之间共享。
- 为什么不使用Zend_Config_Json?
- 因为Zend_Config_Json只能解析单个文件。这在PHP中效果很好,但如果您使用Node.js中的某些东西(例如我恰好使用的node-config),则不能重用相同的配置文件。鉴于我的特定用例(我在重用配置并以node-config开始),这很有意义,因此我需要这个包。