增加控制台配置

This commit is contained in:
yunwuxin
2018-01-26 17:32:19 +08:00
parent 554817c045
commit d0ca837a2c
2 changed files with 325 additions and 299 deletions

View File

@@ -115,7 +115,7 @@ return [
// | 模板设置
// +----------------------------------------------------------------------
'template' => [
'template' => [
// 模板引擎类型 支持 php think 支持扩展
'type' => 'Think',
// 视图基础目录,配置目录为所有模块的视图起始目录
@@ -137,32 +137,32 @@ return [
],
// 视图输出字符串内容替换
'view_replace_str' => [],
'view_replace_str' => [],
// 默认跳转页面对应的模板文件
'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
// +----------------------------------------------------------------------
// | 异常及错误设置
// +----------------------------------------------------------------------
// 异常页面的模板文件
'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl',
'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl',
// 错误显示信息,非调试模式有效
'error_message' => '页面错误!请稍后再试~',
'error_message' => '页面错误!请稍后再试~',
// 显示错误信息
'show_error_msg' => false,
'show_error_msg' => false,
// 异常处理handle类 留空使用 \think\exception\Handle
'exception_handle' => '',
'exception_handle' => '',
// 是否记录trace信息到日志
'record_trace' => false,
'record_trace' => false,
// +----------------------------------------------------------------------
// | 日志设置
// +----------------------------------------------------------------------
'log' => [
'log' => [
// 日志记录方式,内置 file socket 支持扩展
'type' => 'File',
// 日志保存目录
@@ -174,7 +174,7 @@ return [
// +----------------------------------------------------------------------
// | Trace设置 开启 app_trace 后 有效
// +----------------------------------------------------------------------
'trace' => [
'trace' => [
// 内置Html Console 支持扩展
'type' => 'Html',
],
@@ -183,7 +183,7 @@ return [
// | 缓存设置
// +----------------------------------------------------------------------
'cache' => [
'cache' => [
// 驱动方式
'type' => 'File',
// 缓存保存目录
@@ -198,7 +198,7 @@ return [
// | 会话设置
// +----------------------------------------------------------------------
'session' => [
'session' => [
'id' => '',
// SESSION_ID的提交变量,解决flash上传跨域
'var_session_id' => '',
@@ -215,7 +215,7 @@ return [
// +----------------------------------------------------------------------
// | Cookie设置
// +----------------------------------------------------------------------
'cookie' => [
'cookie' => [
// cookie 名称前缀
'prefix' => '',
// cookie 保存时间
@@ -236,7 +236,7 @@ return [
// | 数据库设置
// +----------------------------------------------------------------------
'database' => [
'database' => [
// 数据库类型
'type' => 'mysql',
// 数据库连接DSN配置
@@ -280,10 +280,17 @@ return [
],
//分页配置
'paginate' => [
'paginate' => [
'type' => 'bootstrap',
'var_page' => 'page',
'list_rows' => 15,
],
//控制台配置
'console' => [
'name' => 'Think Console',
'version' => '0.1',
'user' => null
]
];

View File

@@ -79,14 +79,19 @@ class Console
/**
* Console constructor.
* @access public
* @param string $name 名称
* @param string $version 版本
* @param string $name 名称
* @param string $version 版本
* @param null|string $user 执行用户
*/
public function __construct($name = 'UNKNOWN', $version = 'UNKNOWN')
public function __construct($name = 'UNKNOWN', $version = 'UNKNOWN', $user = null)
{
$this->name = $name;
$this->version = $version;
if ($user) {
$this->setUser($user);
}
$this->defaultCommand = 'list';
$this->definition = $this->getDefaultInputDefinition();
@@ -95,6 +100,19 @@ class Console
}
}
/**
* 设置执行用户
* @param $user
*/
public function setUser($user)
{
$user = posix_getpwnam($user);
if ($user) {
posix_setuid($user['uid']);
posix_setgid($user['gid']);
}
}
/**
* 初始化 Console
* @access public
@@ -106,8 +124,9 @@ class Console
static $console;
if (!$console) {
$config = Config::get('console');
// 实例化 console
$console = new self('Think Console', '0.1');
$console = new self($config['name'], $config['version'], $config['user']);
// 读取指令集
if (is_file(CONF_PATH . 'command' . EXT)) {
@@ -479,7 +498,7 @@ class Console
}, $namespace);
$allNamespaces = $this->getNamespaces();
$namespaces = preg_grep('{^' . $expr . '}', $allNamespaces);
$namespaces = preg_grep('{^' . $expr . '}', $allNamespaces);
if (empty($namespaces)) {
$message = sprintf(
@@ -527,7 +546,7 @@ class Console
}, $name);
$allCommands = array_keys($this->commands);
$commands = preg_grep('{^' . $expr . '}', $allCommands);
$commands = preg_grep('{^' . $expr . '}', $allCommands);
if (empty($commands) || count(preg_grep('{^' . $expr . '$}', $commands)) < 1) {
if (false !== ($pos = strrpos($name, ':'))) {
@@ -550,7 +569,7 @@ class Console
if (count($commands) > 1) {
$commandList = $this->commands;
$commands = array_filter($commands, function ($nameOrAlias) use ($commandList, $commands) {
$commands = array_filter($commands, function ($nameOrAlias) use ($commandList, $commands) {
$commandName = $commandList[$nameOrAlias]->getName();
return $commandName === $nameOrAlias || !in_array($commandName, $commands);
@@ -601,7 +620,7 @@ class Console
$abbrevs = [];
foreach ($names as $name) {
for ($len = strlen($name); $len > 0; --$len) {
$abbrev = substr($name, 0, $len);
$abbrev = substr($name, 0, $len);
$abbrevs[$abbrev][] = $name;
}
}
@@ -754,8 +773,8 @@ class Console
*/
private function findAlternatives($name, $collection)
{
$threshold = 1e3;
$alternatives = [];
$threshold = 1e3;
$alternatives = [];
$collectionParts = [];
foreach ($collection as $item) {