cklamm/config

1.0.1 2020-03-31 09:27 UTC

This package is auto-updated.

Last update: 2024-09-29 05:22:20 UTC


README

这个小型库使得从PHP文件中读取配置变量变得容易。

内容

安装

可以通过Composer安装此库。

composer require cklamm/config

ConfigFile

这个类从单个PHP文件中读取配置变量,该文件必须返回一个关联数组。以下是一个示例。

<?php // config.php

return [
    'foo' => 'bar',
    'array' => ['a', 'b', 'c'],

    'db.driver' => 'mysql',
    'db.host' => 'localhost',
    'db.port' => 3306,

    'log.debug.db' => '*',
    'log.debug.file' => '*',
    'log.prod.db' => 'error,warning,info',
    'log.prod.file' => 'error,warning,info',
];

文件名通过ConfigFile的构造函数传递。

使用get($name)方法访问配置变量。

  • 如果$name等于*,则返回整个数组。
  • 如果$name作为键存在,则返回相应的值。
  • 如果$name.*结尾,则返回一个包含所有以$name开头(减去星号)的键的数组。从键中删除$name部分。如果没有匹配的键,返回的数组将为空。
  • 否则返回null
<?php

use cklamm\Config\ConfigFile;

$config = new ConfigFile('config.php');

$config->get('foo');            // 'bar'
$config->get('array');          // ['a', 'b', 'c']
$config->get('undefined');      // null

$config->get('db.driver');      // 'mysql'
$config->get('log.prod.db');    // 'error,warning,info'

$config->get('*');              // all entries
$config->get('db.*');           // all entries whose key starts with db.
$config->get('log.prod.*');     // all entries whose key starts with log.prod.

ConfigFolder

这个类从包含多个PHP文件的文件夹中读取配置变量。每个文件必须返回一个关联数组。例如,我们可以在config文件夹中放置以下两个文件。

<?php // config/db.php

return [
    'driver' => 'mysql',
    'host' => 'localhost',
    'port' => 3306,
];
<?php // config/log.php

return [
    'debug.db' => '*',
    'debug.file' => '*',
    'prod.db' => 'error,warning,info',
    'prod.file' => 'error,warning,info',
];

文件夹名通过ConfigFolder的构造函数传递。

使用get($name)方法访问配置变量。在第一个.之前的部分与文件名对应。

  • 如果$name中不包含.,则返回null
  • 如果没有相应的文件存在,则返回null
  • 否则,其行为类似于ConfigFileget方法。
<?php

use cklamm\Config\ConfigFolder;

$config = new ConfigFolder('config');

$config->get('db.driver');      // 'mysql'
$config->get('log.prod.db');    // 'error,warning,info'

$config->get('*');              // null
$config->get('db');             // null
$config->get('db.*');           // all entries from config/db.php
$config->get('log.prod.*');     // all entries from config/log.php
                                //  whose key starts with prod.