phpgt/config

使用 ini 文件和环境变量管理配置。

维护者

详细信息

github.com/PhpGt/Config

源代码

问题

资助包维护!
PhpGt

v1.1.0 2021-01-30 14:24 UTC

README

通过定义默认值来管理项目配置,这些默认值可以通过 ini 文件和环境变量进行覆盖。

还提供从 CLI 生成 ini 文件的功能。

文档:https://php.gt/docs/config

Build status Code quality Code coverage Current version PHP.Gt/Config documentation

示例用法 - 加载项目配置

项目的配置可以分布在多个文件中。以下示例展示了如何通过环境变量提供秘密,该变量用于覆盖在 config.ini 中定义的默认值,同时也展示了如何使用其他命名的配置文件。

nginx.conf

location ~ \.php$ {
	fastcgi_pass	unix:/var/run/php/php7.1-fpm.sock;
	fastcgi_param	database_password	super-secret-passw0rd;
	include		fastcgi_params;
}

config.ini

[app]
namespace = MyApp
debug = true
logging = verbose

[database]
host = db.example.com
schema = local_shop
username = admin
password = admin_pass

[shopapi]
key = jungfnyyguvffubhgvat
secret = guvfvfnybpnyfubcgurerfabguvatsbelbhurer

config.dev.ini

[database]
host = localhost

example.php

// Load config.ini
$config = new Config("/path/to/project");

// Note that the database password is overriden in the environment (from nginx)
// and the host is overridden by the development ini file.
echo $config->get("database.host");		// localhost
echo $config->get("database.port");		// 6612
echo $config->get("database.password");		// super-secret-passw0rd

示例用法 - 生成配置文件

有时在即时生成配置文件很有用,例如来自持续集成脚本。以下是一个快速示例,展示如何使用几个键值覆盖默认值来生成 config.deploy.ini 文件。

vendor/bin/config-generate deploy "shopapi.key=test-api-key" "database.schema=local_shop_$BRANCH_NAME"

上述命令将创建一个 config.deploy.ini 文件(注意 "deploy" 的第一个参数)并为两个 ini 键提供覆盖。请注意,由于该命令将在持续集成设置中运行,我们预计会有一个 $BRANCH_NAME 变量为我们设置,允许我们使用包含当前分支的架构名称。