mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-01 12:42:48 +08:00
添加自动生成机制
增加模块禁止访问列表设置
This commit is contained in:
@@ -13,6 +13,8 @@ return [
|
||||
'pathinfo_depr' => '/',
|
||||
// 默认模块名
|
||||
'default_module' => 'index',
|
||||
// 禁止访问模块
|
||||
'deny_module_list' => [COMMON_MODULE, 'runtime'],
|
||||
// 默认控制器名
|
||||
'default_controller' => 'index',
|
||||
// 默认操作名
|
||||
@@ -21,8 +23,6 @@ return [
|
||||
'empty_controller' => 'error',
|
||||
// 操作方法后缀
|
||||
'action_suffix' => '',
|
||||
// URL模式
|
||||
'url_model' => 1,
|
||||
// 获取当前页面地址的系统变量 默认为REQUEST_URI
|
||||
'url_request_uri' => 'REQUEST_URI',
|
||||
// 基础URL路径
|
||||
@@ -59,7 +59,7 @@ return [
|
||||
//默认输出类型
|
||||
'default_return_type' => 'html',
|
||||
//默认语言
|
||||
'default_lang' => 'zh-cn',
|
||||
'default_lang' => 'zh-cn',
|
||||
//是否使用session
|
||||
'use_session' => true,
|
||||
//url地址的后缀
|
||||
|
||||
@@ -278,10 +278,10 @@ class App
|
||||
$depr = $config['pathinfo_depr'];
|
||||
// 还原劫持后真实pathinfo
|
||||
$path_info =
|
||||
(defined('BIND_MODULE') ? BIND_MODULE . $depr : '') .
|
||||
(defined('BIND_CONTROLLER') ? BIND_CONTROLLER . $depr : '') .
|
||||
(defined('BIND_ACTION') ? BIND_ACTION . $depr : '') .
|
||||
__INFO__;
|
||||
(defined('BIND_MODULE') ? BIND_MODULE . $depr : '') .
|
||||
(defined('BIND_CONTROLLER') ? BIND_CONTROLLER . $depr : '') .
|
||||
(defined('BIND_ACTION') ? BIND_ACTION . $depr : '') .
|
||||
__INFO__;
|
||||
|
||||
// 路由检测
|
||||
if (!empty($config['url_route_on'])) {
|
||||
@@ -322,7 +322,7 @@ class App
|
||||
define('MODULE_NAME', defined('BIND_MODULE') ? BIND_MODULE : strip_tags($module));
|
||||
|
||||
// 模块初始化
|
||||
if (MODULE_NAME && MODULE_NAME != COMMON_MODULE && is_dir(APP_PATH . MODULE_NAME)) {
|
||||
if (MODULE_NAME && !in_array(MODULE_NAME, $config['deny_module_list']) && is_dir(APP_PATH . MODULE_NAME)) {
|
||||
Hook::listen('app_begin');
|
||||
define('MODULE_PATH', APP_PATH . MODULE_NAME . '/');
|
||||
define('VIEW_PATH', MODULE_PATH . VIEW_LAYER . '/');
|
||||
|
||||
@@ -25,85 +25,133 @@ class Create
|
||||
}
|
||||
}
|
||||
foreach ($build as $module => $list) {
|
||||
if (!is_dir(APP_PATH . $module)) {
|
||||
// 创建模块目录
|
||||
mkdir(APP_PATH . $module);
|
||||
}
|
||||
// 创建配置文件和公共文件
|
||||
self::buildCommonFile($module);
|
||||
// 创建欢迎页面
|
||||
self::buildHelloController($module);
|
||||
|
||||
// 创建子目录和文件
|
||||
foreach ($list as $path => $file) {
|
||||
if (is_int($path)) {
|
||||
// 生成文件
|
||||
if (!is_file(APP_PATH . $module . '/' . $file)) {
|
||||
file_put_contents(APP_PATH . $module . '/' . $file, "<?php\n");
|
||||
}
|
||||
} else {
|
||||
// 创建模块的子目录
|
||||
if (!is_dir(APP_PATH . $module . '/' . $path)) {
|
||||
mkdir(APP_PATH . $module . '/' . $path);
|
||||
}
|
||||
foreach ($file as $val) {
|
||||
if (strpos($val, '.')) {
|
||||
// 文件
|
||||
$filename = $val;
|
||||
$content = '';
|
||||
} else {
|
||||
$filename = APP_PATH . $module . '/' . $path . '/' . strtolower($val) . EXT;
|
||||
switch ($path) {
|
||||
case 'controller': // 控制器
|
||||
$content = "<?php\nnamespace {$module}\\{$path};\nclass {$val} {\n}";
|
||||
break;
|
||||
case 'model': // 模型
|
||||
$content = "<?php\nnamespace {$module}\\{$path};\nclass {$val} extends \Think\Model{\n}";
|
||||
break;
|
||||
case 'view': // 视图
|
||||
$content = '';
|
||||
break;
|
||||
default:
|
||||
$content = "<?php\nnamespace {$module}\\{$path};\nclass {$val} {\n}";
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_file($filename)) {
|
||||
file_put_contents($filename, $content);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ('__dir__' == $module) {
|
||||
// 创建目录列表
|
||||
self::buildDir($list);
|
||||
} elseif ('__file__' == $module) {
|
||||
// 创建文件列表
|
||||
self::buildFile($list);
|
||||
} else {
|
||||
// 创建模块
|
||||
self::buildModule($module, $list);
|
||||
}
|
||||
}
|
||||
// 解除锁定
|
||||
unlink($lockfile);
|
||||
}
|
||||
|
||||
// 创建欢迎页面
|
||||
public static function buildHelloController($module)
|
||||
// 创建目录
|
||||
protected static function buildDir($list)
|
||||
{
|
||||
$filename = APP_PATH . $module . '/controller/index' . EXT;
|
||||
foreach ($list as $dir) {
|
||||
if (!is_dir(APP_PATH . $dir)) {
|
||||
// 创建目录
|
||||
mkdir(APP_PATH . $dir, 0777, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 创建文件
|
||||
protected static function buildFile($list)
|
||||
{
|
||||
foreach ($list as $file) {
|
||||
if (!is_dir(APP_PATH . dirname($file))) {
|
||||
// 创建目录
|
||||
mkdir(APP_PATH . dirname($file), 0777, true);
|
||||
}
|
||||
if (!is_file(APP_PATH . $file)) {
|
||||
file_put_contents(APP_PATH . $file, '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 创建模块
|
||||
protected static function buildModule($module, $list)
|
||||
{
|
||||
if (!is_dir(APP_PATH . $module)) {
|
||||
// 创建模块目录
|
||||
mkdir(APP_PATH . $module);
|
||||
}
|
||||
// 创建配置文件和公共文件
|
||||
self::buildCommon($module);
|
||||
// 创建模块的默认页面
|
||||
self::buildHello($module);
|
||||
|
||||
// 创建子目录和文件
|
||||
foreach ($list as $path => $file) {
|
||||
$modulePath = APP_PATH . $module . '/';
|
||||
if ('__dir__' == $path) {
|
||||
// 生成子目录
|
||||
foreach ($file as $dir) {
|
||||
if (!is_dir($modulePath . $dir)) {
|
||||
// 创建目录
|
||||
mkdir($modulePath . $dir, 0777, true);
|
||||
}
|
||||
}
|
||||
} elseif ('__file__' == $path) {
|
||||
// 生成(空白)文件
|
||||
foreach ($file as $name) {
|
||||
if (!is_file($modulePath . $name)) {
|
||||
file_put_contents($modulePath . $name, '');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 生成相关MVC文件
|
||||
foreach ($file as $val) {
|
||||
$filename = $modulePath . $path . '/' . Loader::parseName($val) . EXT;
|
||||
switch ($path) {
|
||||
case CONTROLLER_LAYER: // 控制器
|
||||
$content = "<?php\nnamespace {$module}\\{$path};\n\nclass {$val} {\n\n}";
|
||||
break;
|
||||
case MODEL_LAYER: // 模型
|
||||
$content = "<?php\nnamespace {$module}\\{$path};\n\nclass {$val} extends \Think\Model{\n\n}";
|
||||
break;
|
||||
case VIEW_LAYER: // 视图
|
||||
$filename = $modulePath . $path . '/' . Loader::parseName($val) . '.html';
|
||||
if (!is_dir(dirname($filename))) {
|
||||
// 创建目录
|
||||
mkdir(dirname($filename), 0777, true);
|
||||
}
|
||||
$content = '';
|
||||
break;
|
||||
default:
|
||||
// 其他文件
|
||||
$content = "<?php\nnamespace {$module}\\{$path};\n\nclass {$val} {\n\n}";
|
||||
}
|
||||
|
||||
if (!is_file($filename)) {
|
||||
file_put_contents($filename, $content);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 创建欢迎页面
|
||||
protected static function buildHello($module)
|
||||
{
|
||||
$filename = APP_PATH . $module . '/' . CONTROLLER_LAYER . '/' . Config::get('default_module') . EXT;
|
||||
if (!is_file($filename)) {
|
||||
$content = file_get_contents(THINK_PATH . 'tpl/default_index.tpl');
|
||||
$content = str_replace('{$module}', $module, $content);
|
||||
if (!is_dir(APP_PATH . $module . '/controller')) {
|
||||
mkdir(APP_PATH . $module . '/controller');
|
||||
if (!is_dir(APP_PATH . $module . '/' . CONTROLLER_LAYER)) {
|
||||
mkdir(APP_PATH . $module . '/' . CONTROLLER_LAYER);
|
||||
}
|
||||
file_put_contents($filename, $content);
|
||||
}
|
||||
}
|
||||
|
||||
// 创建模块公共文件
|
||||
public static function buildCommonFile($module)
|
||||
protected static function buildCommon($module)
|
||||
{
|
||||
if (!is_file(APP_PATH . $module . '/common.php')) {
|
||||
file_put_contents(APP_PATH . $module . '/common.php', "<?php\n");
|
||||
}
|
||||
if (!is_file(APP_PATH . $module . '/config.php')) {
|
||||
file_put_contents(APP_PATH . $module . '/config.php', "<?php\nreturn [\n];");
|
||||
file_put_contents(APP_PATH . $module . '/config.php', "<?php\nreturn [\n\n];");
|
||||
}
|
||||
if (!is_file(APP_PATH . $module . '/alias.php')) {
|
||||
file_put_contents(APP_PATH . $module . '/alias.php', "<?php\nreturn [\n];");
|
||||
file_put_contents(APP_PATH . $module . '/alias.php', "<?php\nreturn [\n\n];");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user