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 变量已设置,允许我们使用包含当前分支名称的模式名称。