切换导航条
此项目
正在载入...
登录
何书鹏
/
recruit
·
提交
转到一个项目
GitLab
转到仪表盘
项目
活动
文件
提交
管道
0
构建
0
图表
里程碑
问题
0
合并请求
0
成员
标记
维基
派生
网络
创建新的问题
下载为
邮件补丁
差异文件
浏览文件
作者
Karson
8 years ago
提交
5e7a598a193294d9b745a985c8c99ca184433a69
1 个父辈
a5355f4d
修复一键生成CRUD的目录路径
修复一键生成菜单在php7.0版本下无法一键生成全部的BUG
隐藏空白字符变更
内嵌
并排对比
正在显示
2 个修改的文件
包含
32 行增加
和
8 行删除
application/admin/command/Crud.php
application/admin/command/Menu.php
application/admin/command/Crud.php
查看文件 @
5e7a598
...
...
@@ -55,15 +55,15 @@ class Crud extends Command
$tableInfo
=
$tableInfo
[
0
];
//根据表名匹配对应的Fontawesome图标
$iconPath
=
ROOT_PATH
.
'/public/assets/libs/font-awesome/less/variables.less'
;
$iconPath
=
ROOT_PATH
.
str_replace
(
'/'
,
DS
,
'/public/assets/libs/font-awesome/less/variables.less'
)
;
$iconName
=
is_file
(
$iconPath
)
&&
stripos
(
file_get_contents
(
$iconPath
),
'@fa-var-'
.
$table
.
':'
)
?
$table
:
'fa fa-circle-o'
;
//控制器默认以表名进行处理,以下划线进行分隔,如果需要自定义则需要传入controller,格式为目录层级
$controllerArr
=
!
$controller
?
explode
(
'_'
,
strtolower
(
$table
))
:
explode
(
'/'
,
strtolower
(
$controller
));
$controllerUrl
=
implode
(
'/'
,
$controllerArr
);
$controllerName
=
ucfirst
(
array_pop
(
$controllerArr
));
$controllerDir
=
implode
(
'/'
,
$controllerArr
);
$controllerFile
=
(
$controllerDir
?
$controllerDir
.
'/'
:
''
)
.
$controllerName
.
'.php'
;
$controllerDir
=
implode
(
DS
,
$controllerArr
);
$controllerFile
=
(
$controllerDir
?
$controllerDir
.
DS
:
''
)
.
$controllerName
.
'.php'
;
//非覆盖模式时如果存在控制器文件则报错
if
(
is_file
(
$controllerFile
)
&&
!
$force
)
...
...
@@ -330,7 +330,7 @@ class Crud extends Command
*/
protected
function
getStub
(
$name
)
{
return
__DIR__
.
'/Crud/stubs/'
.
$name
.
'.stub'
;
return
__DIR__
.
DS
.
'Crud'
.
DS
.
'stubs'
.
DS
.
$name
.
'.stub'
;
}
protected
function
getLangItem
(
$field
,
$content
)
...
...
application/admin/command/Menu.php
查看文件 @
5e7a598
...
...
@@ -43,7 +43,7 @@ class Menu extends Command
end
(
$controllerArr
);
$key
=
key
(
$controllerArr
);
$controllerArr
[
$key
]
=
ucfirst
(
$controllerArr
[
$key
]);
$adminPath
=
dirname
(
__DIR__
)
.
DS
.
'controller'
.
DS
.
implode
(
'/'
,
$controllerArr
)
.
'.php'
;
$adminPath
=
dirname
(
__DIR__
)
.
DS
.
'controller'
.
DS
.
implode
(
DS
,
$controllerArr
)
.
'.php'
;
if
(
!
is_file
(
$adminPath
))
{
$output
->
error
(
"controller not found"
);
...
...
@@ -75,9 +75,9 @@ class Menu extends Command
{
if
(
!
in_array
(
$value
,
array
(
"."
,
".."
)))
{
if
(
is_dir
(
$dir
.
'/'
.
$value
))
if
(
is_dir
(
$dir
.
DS
.
$value
))
{
$result
[
$value
]
=
$this
->
scandir
(
$dir
.
'/'
.
$value
);
$result
[
$value
]
=
$this
->
scandir
(
$dir
.
DS
.
$value
);
}
else
{
...
...
@@ -127,8 +127,32 @@ class Menu extends Command
end
(
$controllerArr
);
$key
=
key
(
$controllerArr
);
$controllerArr
[
$key
]
=
ucfirst
(
$controllerArr
[
$key
]);
$classSuffix
=
Config
::
get
(
'controller_suffix'
)
?
ucfirst
(
Config
::
get
(
'url_controller_layer'
))
:
''
;
$className
=
"
\\
app
\\
admin
\\
controller
\\
"
.
implode
(
"
\\
"
,
$controllerArr
)
.
$classSuffix
;
if
(
version_compare
(
PHP_VERSION
,
'7.0.0'
,
'<'
))
{
$pathArr
=
$controllerArr
;
array_unshift
(
$pathArr
,
''
,
'application'
,
'admin'
,
'controller'
);
$classFile
=
ROOT_PATH
.
implode
(
DS
,
$pathArr
)
.
$classSuffix
.
".php"
;
$classContent
=
file_get_contents
(
$classFile
);
$uniqueName
=
uniqid
(
"FastAdmin"
)
.
$classSuffix
;
$classContent
=
str_replace
(
"class "
.
$controllerArr
[
$key
]
.
$classSuffix
.
" "
,
'class '
.
$uniqueName
.
' '
,
$classContent
);
$classContent
=
preg_replace
(
"/namespace\s(.*);/"
,
'namespace '
.
__NAMESPACE__
.
";"
,
$classContent
);
//临时的类文件
$tempClassFile
=
__DIR__
.
DS
.
$uniqueName
.
".php"
;
file_put_contents
(
$tempClassFile
,
$classContent
);
$className
=
"
\\
app
\\
admin
\\
command
\\
"
.
$uniqueName
;
}
//反射机制调用类的注释和方法名
$reflector
=
new
ReflectionClass
(
"
\\
app
\\
admin
\\
controller
\\
"
.
implode
(
"
\\
"
,
$controllerArr
)
.
(
Config
::
get
(
'controller_suffix'
)
?
ucfirst
(
Config
::
get
(
'url_controller_layer'
))
:
''
));
$reflector
=
new
ReflectionClass
(
$className
);
if
(
isset
(
$tempClassFile
))
{
//删除临时文件
@
unlink
(
$tempClassFile
);
}
//只匹配公共的方法
$methods
=
$reflector
->
getMethods
(
ReflectionMethod
::
IS_PUBLIC
);
$classComment
=
$reflector
->
getDocComment
();
...
...
请
注册
或
登录
后发表评论