改进配置缓存生成 支持扩展配置

This commit is contained in:
thinkphp
2016-09-22 11:06:23 +08:00
parent b94b0a5118
commit 681e5eeac7

View File

@@ -10,9 +10,10 @@
// +----------------------------------------------------------------------
namespace think\console\command\optimize;
use think\Config as ThinkConfig;
use think\console\Command;
use think\console\Input;
use think\console\input\Option;
use think\console\input\Argument;
use think\console\Output;
class Config extends Command
@@ -23,14 +24,14 @@ class Config extends Command
protected function configure()
{
$this->setName('optimize:config')
->addOption('module', null, Option::VALUE_REQUIRED, 'Build module config cache .')
->addArgument('module', Argument::OPTIONAL, 'Build module config cache .')
->setDescription('Build config and common file cache.');
}
protected function execute(Input $input, Output $output)
{
if ($input->hasOption('module')) {
$module = $input->getOption('module') . DS;
if ($input->hasArgument('module')) {
$module = $input->getArgument('module') . DS;
} else {
$module = '';
}
@@ -50,25 +51,30 @@ class Config extends Command
{
$content = '';
$path = realpath(APP_PATH . $module) . DS;
// 加载模块配置
$config = \think\Config::load(CONF_PATH . $module . 'config' . CONF_EXT);
// 加载应用状态配置
if ($module && $config['app_status']) {
$config = \think\Config::load(CONF_PATH . $module . $config['app_status'] . CONF_EXT);
}
if ($module) {
// 加载模块配置
$config = ThinkConfig::load(CONF_PATH . $module . 'config' . CONF_EXT);
// 读取扩展配置文件
if ($module && $config['extra_config_list']) {
foreach ($config['extra_config_list'] as $name => $file) {
$filename = CONF_PATH . $module . $file . CONF_EXT;
\think\Config::load($filename, is_string($name) ? $name : pathinfo($filename, PATHINFO_FILENAME));
// 读取数据库配置文件
$filename = CONF_PATH . $module . 'database' . CONF_EXT;
ThinkConfig::load($filename, 'database');
// 加载应用状态配置
if ($config['app_status']) {
$config = ThinkConfig::load(CONF_PATH . $module . $config['app_status'] . CONF_EXT);
}
// 读取扩展配置文件
if (is_dir(CONF_PATH . $module . 'extra')) {
$dir = CONF_PATH . $module . 'extra';
$files = scandir($dir);
foreach ($files as $file) {
if (strpos($file, CONF_EXT)) {
$filename = $dir . DS . $file;
ThinkConfig::load($filename, pathinfo($file, PATHINFO_FILENAME));
}
}
}
}
// 加载别名文件
if (is_file(CONF_PATH . $module . 'alias' . EXT)) {
$content .= '\think\Loader::addClassMap(' . (var_export(include CONF_PATH . $module . 'alias' . EXT, true)) . ');' . PHP_EOL;
}
// 加载行为扩展文件
@@ -81,7 +87,7 @@ class Config extends Command
$content .= substr(php_strip_whitespace($path . 'common' . EXT), 5) . PHP_EOL;
}
$content .= '\think\Config::set(' . var_export(\think\Config::get(), true) . ');';
$content .= '\think\Config::set(' . var_export(ThinkConfig::get(), true) . ');';
return $content;
}
}