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

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; namespace think\console\command\optimize;
use think\Config as ThinkConfig;
use think\console\Command; use think\console\Command;
use think\console\Input; use think\console\Input;
use think\console\input\Option; use think\console\input\Argument;
use think\console\Output; use think\console\Output;
class Config extends Command class Config extends Command
@@ -23,14 +24,14 @@ class Config extends Command
protected function configure() protected function configure()
{ {
$this->setName('optimize:config') $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.'); ->setDescription('Build config and common file cache.');
} }
protected function execute(Input $input, Output $output) protected function execute(Input $input, Output $output)
{ {
if ($input->hasOption('module')) { if ($input->hasArgument('module')) {
$module = $input->getOption('module') . DS; $module = $input->getArgument('module') . DS;
} else { } else {
$module = ''; $module = '';
} }
@@ -50,25 +51,30 @@ class Config extends Command
{ {
$content = ''; $content = '';
$path = realpath(APP_PATH . $module) . DS; $path = realpath(APP_PATH . $module) . DS;
// 加载模块配置
$config = \think\Config::load(CONF_PATH . $module . 'config' . CONF_EXT);
// 加载应用状态配置 if ($module) {
if ($module && $config['app_status']) { // 加载模块配置
$config = \think\Config::load(CONF_PATH . $module . $config['app_status'] . CONF_EXT); $config = ThinkConfig::load(CONF_PATH . $module . 'config' . CONF_EXT);
}
// 读取扩展配置文件 // 读取数据库配置文件
if ($module && $config['extra_config_list']) { $filename = CONF_PATH . $module . 'database' . CONF_EXT;
foreach ($config['extra_config_list'] as $name => $file) { ThinkConfig::load($filename, 'database');
$filename = CONF_PATH . $module . $file . CONF_EXT;
\think\Config::load($filename, is_string($name) ? $name : pathinfo($filename, PATHINFO_FILENAME)); // 加载应用状态配置
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 .= 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; return $content;
} }
} }