>  기사  >  백엔드 개발  >  下面这个方法是起到路由作用的,它是如何完成这个流程的

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

WBOY
WBOY원래의
2016-06-13 12:20:131047검색

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

/**<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 />

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.