corneltek/configkit

快速配置工具包,提供超级轻量级的配置访问器和加载器。

1.6.6 2017-05-29 04:25 UTC

This package is auto-updated.

Last update: 2024-08-29 03:52:49 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

ConfigKit 可以自动将可读的 YAML 配置文件编译成 PHP 文件。

YAML 格式整洁、智能、易于使用。但在 PHP 中,您必须在每个请求中解析 YAML 配置文件。解析 YAML 消耗太多 CPU 时间。如何改进呢?

php-ConfigKit 是一个用于配置文件的库,旨在提高性能。它首次解析 YAML 配置文件,然后将其编译成 PHP 文件,因此这些配置文件可以在 PHP 中进行缓存,也可以在 APC 或任何其他缓存后端系统中缓存。

ConfigKit 简单快速,您只需定义您的 YAML 格式配置文件,然后使用 ConfigKit 加载该配置文件。

ConfigKit 使用静态方法,因为静态方法比对象方法更快。

它会检查 {配置文件}.php 是否存在,如果存在,则会检查文件修改时间以决定是否重新编译 YAML 文件。

当启用 APC 扩展时,PHP 源代码可以缓存到 APC 中,因此当您需要纯 PHP 源文件时,它将比从 YAML 重新解析更快。

生成的配置 PHP 文件如下

<?php return array (
      'ApplicationName' => 'Phifty',
      'ApplicationID' => 'phifty',
      'ApplicationUUID' => '9fc933c0-70f9-11e1-9095-3c07541dfc0c',
      'Domain' => 'phifty.dev',

需求

YAML 扩展

安装

Composer

{
    "require": { 
        "corneltek/configkit": "~1.5"
    }
}

使用

ConfigCompiler

编译 YAML 配置文件并获取配置缓存

$config = ConfigCompiler::load('tests/ConfigKit/data/framework.yml');
print_r( $config );

禁用统计检查(mtime 检查)

ConfigCompiler::$statCheck = false;
$config = ConfigCompiler::load('tests/ConfigKit/data/framework.yml');

如果您想手动编译配置文件,可以调用 compile 静态函数来完成

$compiledFile = ConfigCompiler::compile('config/framework.yml');

您还可以在参数中指定编译后的文件名

$compiledFile = ConfigCompiler::compile('config/framework.yml', 'config/framework.php');

您还可以在编译过程中通过使用 override_compile 函数覆盖一些配置值

$compiledFile = ConfigCompiler::override_compile('config/framework.yml', array( 
    'something_should_not_be_in_config_file' => 123123123,
    'something_should_not_be_in_git' => 123123123,
    'something_generated_in_the_runtime' => random(),
));

测试编译文件是否需要更新(重新编译)

if ( ConfigCompiler::test('config/framework.yml','config/framework.php')) ) {
    ConfigCompiler::compile(....);
} else {
    // already up to date.
}

ConfigLoader

您可以使用 ConfigLoader 管理多个配置文件

$loader = new ConfigLoader;
$loader->load( 'framework', 'config/framework.yml' );
$loader->load( 'database', 'config/database.yml' );

获取配置缓存

$paths = $loader->get('framework','web.paths');
$templates = $loader->get('framework','web.templates');
foreach( $paths as $path ) {
    echo $path, "\n";
}

将所有配置缓存写入一个缓存文件

$loader->writeStashes('all.php');

重新加载所有配置缓存

$loader->loadStashes('all.php');

生成 AppConfigLoader 类

$loader = new ConfigKit\ConfigLoader;
$loader->load('database','tests/data/database.yml');
$loader->load('framework','tests/data/framework.yml');
$appClass = $loader->generateAppClass('MyApp\\AppConfigLoader');
$path = $appClass->generatePsr4ClassUnder('tests');
require_once($path); 
$appConfigLoader = new \MyApp\AppConfigLoader;