xy2z / lite-config
一个无依赖的轻量级PHP静态类。
1.2.2
2023-09-24 18:22 UTC
Requires (Dev)
- phpstan/phpstan: 1.*
- phpunit/phpunit: 9.*
This package is auto-updated.
Last update: 2024-09-13 05:53:24 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,则抛出异常。