下面这个路由的写法如何理解
程序员文章站
2022-04-11 14:03:20
...
/**
* 控制器调度
*
*/
private static function control(){
//二级域名
if ($GLOBALS['setting_config']['enabled_subdomain'] == '1' && $_GET['act'] == 'index' && $_GET['op'] == 'index'){
$store_id = subdomain();
if ($store_id > 0) $_GET['act'] = 'show_store';
}
$act_file = realpath(BASE_PATH.'/control/'.$_GET['act'].'.php');
$class_name = $_GET['act'].'Control';
if (!@include($act_file)){
if (C('debug')) {
throw_exception("Base Error: access file isn't exists!");
} else {
showMessage('抱歉!您访问的页面不存在','','html','error');
}
}
if (class_exists($class_name)){
$main = new $class_name();
$function = $_GET['op'].'Op';
if (method_exists($main,$function)){
$main->$function();
}elseif (method_exists($main,'indexOp')){
$main->indexOp();
}else {
$error = "Base Error: function $function not in $class_name!";
throw_exception($error);
}
}else {
$error = "Base Error: class $class_name isn't exists!";
throw_exception($error);
}
}
* 控制器调度
*
*/
private static function control(){
//二级域名
if ($GLOBALS['setting_config']['enabled_subdomain'] == '1' && $_GET['act'] == 'index' && $_GET['op'] == 'index'){
$store_id = subdomain();
if ($store_id > 0) $_GET['act'] = 'show_store';
}
$act_file = realpath(BASE_PATH.'/control/'.$_GET['act'].'.php');
$class_name = $_GET['act'].'Control';
if (!@include($act_file)){
if (C('debug')) {
throw_exception("Base Error: access file isn't exists!");
} else {
showMessage('抱歉!您访问的页面不存在','','html','error');
}
}
if (class_exists($class_name)){
$main = new $class_name();
$function = $_GET['op'].'Op';
if (method_exists($main,$function)){
$main->$function();
}elseif (method_exists($main,'indexOp')){
$main->indexOp();
}else {
$error = "Base Error: function $function not in $class_name!";
throw_exception($error);
}
}else {
$error = "Base Error: class $class_name isn't exists!";
throw_exception($error);
}
}
回复讨论(解决方案)
把get里面的$act和$Op接下来,然后act是控制器的名字,将act接下来之后拼装成$actControl,然后引入文件,引入文件失败就抛异常,找到文件之后判断是否有$OpOp这个方法,如果没有就调用indexOp方法,如果还是没有就抛出方法不存在异常
发代码段能不能用代码格式啊= =看的头疼。。
下一篇: Java中出现内存泄漏情况的概述
推荐阅读
-
[高速通道进阶一]如何理解高速通道的就近接入和一点接入连接全球 VPC路由器专线接入
-
[高速通道进阶一]如何理解高速通道的就近接入和一点接入连接全球 VPC路由器专线接入
-
问下这个SQL的写法,该如何处理
-
smarty中的这个数组如果理解呀,该如何解决
-
下面这个网页是如何做的:缩放浏览器窗口,网页中文字、图片大小跟着缩放_html/css_WEB-ITnose
-
下面这个方法是起到路由作用的,它是怎么完成这个流程的
-
nginx - 下面这个PHP是源码加密了吗?请问用的什么技术以及如何部署?
-
smarty中的这个数组如果理解呀,该如何解决
-
下面这个方法是起到路由作用的,它是如何完成这个流程的
-
nginx - 下面这个PHP是源码加密了吗?请问用的什么技术以及如何部署?