raphhh/puppy-config

配置管理器

2.0.0 2016-03-23 08:24 UTC

This package is auto-updated.

Last update: 2024-08-25 21:37:50 UTC


README

Latest Stable Version Build Status Scrutinizer Quality Score Code Coverage Dependency Status Total Downloads Reference Status License

Puppy Config 是一个配置管理器,它根据您的环境从文件中加载配置。

配置基本逻辑

  • 环境配置管理(开发、测试、生产等)
  • 支持多种文件格式(php、ini、json、yaml)
  • 动态配置值
  • 可见性限制

安装

运行 composer

$ composer require raphhh/puppy-config

读取配置

添加主配置文件 /config/global.php

// /config/global.php
return [
    'key' => 'value',
];

启动 Config 类

use Puppy\Config\Config;

$config = new Config();
$config['key']; //'value'

动态值

您可以使用键检索之前定义的值。

// /config/global.php
return [
    'key1' => 'value1',
    'key2' => '%key1%_b',
];
use Puppy\Config\Config;

$config = new Config();
$config['key2']; //'value1_b'

设置新值

您可以在运行时设置新值,这些值将在整个脚本中可用(但不保存到文件配置中)。

use Puppy\Config\Config;

$config = new Config();
$config['new_key'] = 'new_value';

您还可以使用动态映射。

$config['new_key2'] = '%new_key%';
$config['new_key2']; //'new_value'

可见性限制

您可以在配置中确定一些命名空间,并限制每个命名空间的可见性。

例如,假设您设置了以下配置,包含两个命名空间:'a' 和 'b'。

//namespace a
$globalConfig['a.a'] = 'a.a';
$globalConfig['a.b'] = 'a.b';

//namespace b
$globalConfig['b.a'] = 'b.a';
$globalConfig['b.b'] = 'b.b';

使用全局作用域配置,您可以访问所有值。

$globalConfig['a.a']; //'a.a'
$globalConfig['b.a']; //'b.a'

现在,将配置限制为命名空间 'a'。

$restrictedConfig = $globalConfig->restrict('a');

使用此限制作用域配置,您只能访问命名空间 'a' 的值

$restrictedConfig['a']; //'a.a'
$restrictedConfig['b']; //'a.b'

原始键不再可见

isset($restrictedConfig['a.a']); //false
isset($restrictedConfig['b.a']); //false

但是,全局作用域配置仍然绑定到您的限制作用域。因此,如果您修改其中一个,另一个也会被修改。

$restrictedConfig['a'] = 'new value';
$globalConfig['a.a']; //'new value'

文件格式

默认情况下,Config 加载 'php' 文件。此类文件必须返回一个 PHP 数组。

// /config/global.php
return [
    'key' => 'value',
];

但您可以指定或添加特定的文件格式。

new Config('', null, new YmlFileReader()); //will load config/global.yml

支持的格式

  • php(默认)
  • ini
  • json
  • yaml

多环境

您的配置是来自三种类型文件的值的合并

何时加载全局配置?

在所有情况下,Config 都会加载文件 'global.php'。(您可以轻松更改此默认文件。)

默认情况下,这是您的生产配置。

何时加载环境配置?

如果您在构造函数中指定了环境,它也会加载相关的文件。

例如

new Config('dev'); //will load dev.php (in addition to global.php)

环境配置将覆盖全局配置。因此,请将其用于开发环境,它将覆盖您的生产参数。

环境如何动态更改?

在您的服务器虚拟主机配置中设置一个环境变量,并使用 php getenv() 方法 检索它。

在您的 httpd.conf 或开发 Apache 服务器的 .htaccess 文件中,输入

SetEnv APP_ENV "dev"

在您的 PHP 文件中检索环境

new Config(getenv('APP_ENV')); //will load dev.php only in your dev server

什么是本地配置?

如果存在文件 config/local.php,配置将加载本地配置。

此配置将覆盖全局和环境配置。请注意:此文件不得进行版本控制。

因此,这是一个个人配置,您可以在其中放置临时或特定配置。您还可以放置不想进行版本控制的配置,例如密码。