apinstein/config_magic

任意维护者的配置管理系统

详细信息

github.com/apinstein/config-magic

主页

源码

问题

安装数量

v1.0.4 2014-03-28 18:05 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:30:22 UTC


README

一个简单的组织工具,可以帮助您管理您的Web应用的配置文件。

安装

$ composer global require apinstein/config_magic

工作原理

典型的Web应用有1个或多个配置文件。例如,您的应用可能有以下文件:httpd.conf(apache配置)webapp.conf(框架配置)sh.conf(shell脚本配置)

典型的Web应用也在多个服务器上运行。例如:dev-alan dev-jason staging production

将您的Web应用配置为新环境可能会迅速成为一个痛苦的过程,因为您必须记得编辑多个文件并使用正确的信息。在我的经验中,很多时间都浪费在尝试以下方面:- 每次配置一个新环境 - 记住所有需要配置的不同位置和值 - 通过正则表达式替换来批量替换重复列出的事物

ConfigMagic通过让您快速轻松地为每个配置文件设置模板文件来解决这些问题。您的模板文件可以包含您配置中使用的每个变量替换的默认数据。然后,您只需为每个机器配置设置一个profile.ini,并声明您需要使用的任何非默认数据。ConfigMagic然后将所有配置文件写入给定配置。

ConfigMagic附带一个名为"cfg"的命令行工具,可以快速管理此过程。

示例

为此项目初始化ConfigMagic。

$ cfg -i

设置示例配置文件

$ echo "myProfile = ##PROFILE##" > config/templates/example.conf
$ echo "myVar = ##my.var##" >> config/templates/example.conf

设置空配置文件

$ echo "my.var = 10" > config/profiles/dev.ini

为"dev"配置文件构建所有配置文件

$ cfg dev

检查

$ cat config/example.conf

输出

myProfile = dev
myVar = 10

变量替换

模板文件中的变量形式为

##my.var##

并将被替换为相应的ini文件变量

my.var

profile.ini文件中的变量将覆盖config.ini文件中设置的默认值。

变量还可以在之前定义的变量(即在文件中更高位置)上使用变量替换。

a = foo b = ##a##-bar # b = foo-bar

以下变量将自动定义

##CONFIG## => 当前配置名称 ##PROFILE## => 当前配置文件名称 ##CONFIG_DIR## => 配置目录的绝对路径 ##OUTPUT_DIR## => 输出目录的绝对路径 ##TEMPLATES_DIR## => 配置/templates目录的绝对路径

模板文件中的任何未在任何ini文件中定义的变量替换都将被跳过,并打印警告。

动态模板

所有模板都被视为PHP代码,这意味着您可以使用正常的PHP语法根据配置文件数据动态生成配置文件。

所有在正常变量替换中可用的变量(形式为##varname##)都可通过$profileData变量在模板中使用。例如

<?php if (!$profileData['##isProduction##']): ?>
'classname' => 'DebugPDO',
<?php endif; ?>

注意:如果您实际上正在生成php文件,则需要转义php标签,以便它们不被视为“PHP开始标签”

长php标签 <<?php ?>?php

短php标签 <<? ?>?

动态变量

在某些情况下,您可能希望在模板文件之外直接通过动态模板对配置数据进行编程式修改。

一个很好的例子是在变量级别上调用realpath()函数,这样您就无需在模板中每次都这样做。

这可以通过以下简单语法完成

project.dir = "<?php realpath('##OUTPUT_DIR##/..') ?>"

PHP处理将在变量替换处理之后发生。

结论

开始使用ConfigMagic非常简单,它提供了一个坚实的组织框架来管理您的配置文件。希望您喜欢它。

请随时向我发送评论或建议。