corneltek / configkit
快速配置工具包,提供超级轻量级的配置访问器和加载器。
1.6.6
2017-05-29 04:25 UTC
Requires
- php: >=5.3.0
- corneltek/codegen: >=3.0
- corneltek/fileutil: ^1
- symfony/yaml: ^2.8|^3.0|^3.2
Requires (Dev)
- corneltek/phpunit-testmore: dev-master
README
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;