xy2z/lite-config

一个无依赖的轻量级PHP静态类。

资助包维护!
xy2z

1.2.2 2023-09-24 18:22 UTC

README

一个无依赖的轻量级PHP静态类。

支持多个配置和多维数组。

内置对PHP、INI和JSON文件的支持。也支持YAML以及其他任何可以解析为数组的格式,详见下面的 custom_handler()

要求

  • PHP 7.0+

安装

composer require xy2z/lite-config

示例

require 'path/to/vendor/autoload.php';
use xy2z\LiteConfig\LiteConfig as Config;

数组

Config::loadArray([
  'version' => '1.0',
  'app' => [
      'name' => 'Example'
  ]
]);

echo Config::get('version'); # 1.0
echo Config::get('app'); # Array('name' => 'Example')
echo Config::get('app.name', 'default name'); # Example
echo Config::get('app.type', 'Desktop'); # Desktop

目录

# config/settings.php
return [
  'app_name' => 'Example',
];

# index.php
Config::loadDir('config/', true);
echo Config::get('settings.app_name'); # key is 'filename.key'

单个文件

# No key prefix
Config::loadFile('config/settings.php');
echo Config::get('key');

# Prefix filename to key
Config::loadFile('config/db.ini', true);
echo Config::get('db.key');

YAML

要加载单个YAML文件,请参见以下内容。如果您需要使用 loadDir() 与YAML(或其他)文件一起,请阅读以下关于“自定义处理程序”的内容。

composer require symfony/yaml
use xy2z\LiteConfig\LiteConfig as Config;
use Symfony\Component\Yaml\Yaml;

Config::loadArray(Yaml::parseFile(__DIR__ . '/config/file.yml'));

echo Config::get('key');

自定义处理程序

自定义处理程序可用于内置(.php、.json和.ini)以外的文件扩展名。当使用 loadFile()loadDir() 函数时,这将自动工作。

以下是如何使用静态 custom_handler() 函数以实现YAML支持。

use xy2z\LiteConfig\LiteConfig;
use Symfony\Component\Yaml\Yaml;

class CustomLiteConfig extends LiteConfig {

    protected static function custom_handler(string $extension, string $path) {
        if (($extension === 'yml') || ($extension === 'yaml')) {
            return Yaml::parseFile($path);
        }

        // Handle other extensions here...
    }

}

CustomLiteConfig::loadDir(__DIR__ . '/config', true);
var_dump(CustomLiteConfig::all());

如果您想修改所有文件现有的处理方式,可以在子类中重写完整的 getFileContent() 函数,该函数由 loadDir()loadFile() 使用。

公开方法

  • get(string $key, $default = null) 获取键的值。
  • all() 返回完整的数组。
  • exists(string $key) 键是否存在?
  • loadDir(string $path, bool $prefix_filename = false, string $prefix = null) 加载目录中的所有文件。
  • loadFile(string $path, bool $prefix_filename = false, string $custom_prefix = null) 加载单个文件。
  • loadArray(array $array, string $prefix = null) 加载PHP数组。

公开属性

  • ini_process_sections (bool, 默认 true) - 在文件_parse_ini() 中使用的参数
  • ini_scanner_mode (int, 默认 INI_SCANNER_TYPED) - 在文件_parse_ini() 中使用的参数
  • ignore_unsupported_filestypes (bool, 默认 true) - 如果为true,则忽略不支持的文件扩展名。如果为false,则抛出异常。