下面这个方法是起到路由作用的,它是如何完成这个流程的

WBOY
发布: 2016-06-13 12:20:13
原创
1007 人浏览过

下面这个方法是起到路由作用的,它是怎么完成这个流程的

/**<br />	 * 控制器调度<br />	 *<br />	 */<br />	private static function control(){<br />		//二级域名<br />            //var_dump($GLOBALS['setting_config']['enabled_subdomain']);<br />		if ($GLOBALS['setting_config']['enabled_subdomain'] == '1' && $_GET['act'] == 'index' && $_GET['op'] == 'index'){<br />			$store_id = subdomain();<br />			if ($store_id > 0) $_GET['act'] = 'show_store';<br />		}<br />		$act_file = realpath(BASE_PATH.'/control/'.$_GET['act'].'.php');<br />		$class_name = $_GET['act'].'Control';<br />                //echo $act_file;<br />		if ([email&#160;protected]($act_file)){<br />		    if (C('debug')) {<br />		        throw_exception("Base Error: access file isn't exists!");<br />		    } else {<br />		        showMessage('抱歉!您访问的页面不存在','','html','error');<br />		    }<br />		}<br />		if (class_exists($class_name)){<br />			$main = new $class_name();<br />			$function = $_GET['op'].'Op';<br />			if (method_exists($main,$function)){<br />				$main->$function();<br />			}elseif (method_exists($main,'indexOp')){<br />				$main->indexOp();<br />			}else {<br />				$error = "Base Error: function $function not in $class_name!";<br />				throw_exception($error);<br />			}<br />		}else {<br />			$error = "Base Error: class $class_name isn't exists!";<br />			throw_exception($error);<br />		}<br />	}
登录后复制

------解决思路----------------------
根据controler与action,判断要调用的类与方法
<br />$act_file = realpath(BASE_PATH.'/control/'.$_GET['act'].'.php');<br />$class_name = $_GET['act'].'Control';<br />
登录后复制

然后判断如果类和方法存在则调用,就这样。
<br />if (class_exists($class_name)){<br />            $main = new $class_name();<br />            $function = $_GET['op'].'Op';<br />            if (method_exists($main,$function)){<br />                $main->$function();<br />            }elseif (method_exists($main,'indexOp')){<br />                $main->indexOp();<br />            }else {<br />                $error = "Base Error: function $function not in $class_name!";<br />                throw_exception($error);<br />            }<br />        }<br />
登录后复制

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!