Home > php教程 > PHP源码 > body text

PHP路由代码

PHP中文网
Release: 2016-05-25 17:13:55
Original
1100 people have browsed it

PHP路由代码

<?php
/**
 * 路由
 * @author 角度 QQ:1286522207
 *
 */
class Dispatcher extends Action {
	private $url;
	private $config;
	function __construct(){
		$this->routerCheck();
	}
	/**
	 * 路由检测
	 */
	function routerCheck(){
		global $config;
		$this->config=$config;
		$suffix=$this->config[&#39;URL_HTML_SUFFIX&#39;];
		//  获取当前路由参数对应的变量
		$paths = (array_filter(explode(&#39;/&#39;,trim(preg_replace(&#39;/\.&#39;.$suffix.&#39;$/&#39;,&#39;&#39;,
		$_SERVER[&#39;PHP_SELF&#39;]),&#39;/&#39;))));
		if ($this->config[&#39;URL_PATHINFO_MODEL&#39;]==1){
			define(&#39;/index.php/Article&#39;,&#39;/&#39;.$paths[0].&#39;/&#39;);
		}elseif ($this->config[&#39;URL_PATHINFO_MODEL&#39;]==2){
			define(&#39;/index.php/Article&#39;,&#39;/&#39;);
		}
		if (empty($paths[1])){
			$paths[1]=&#39;index&#39;;
		}
		if (empty($paths[2])){
			$paths[2]=&#39;index&#39;;
		}
		if (empty($paths[3])){
			$paths[3]=&#39;index&#39;;
		}
		$this->Action($paths);
	}
	/**
	 * 实例化操作
	 */
	function Action($paths){
		if ($paths[1]==$this->config[&#39;TMPL_ADMIN_PATH&#39;]){
			include APP_PATH.&#39;/&#39;.$this->config[&#39;TMPL_ADMIN_PATH&#39;].&#39;/commonAction.php&#39;;
			$A=APP_PATH.&#39;/&#39;.$paths[1]."/".$paths[2]."Action.class.php";
			$b=$paths[2];
			@$c=$paths[3];
		}else {
			$A=APP_PATH."/Action/".$paths[1]."Action.class.php";
			$b=$paths[1];
			$c=$paths[2];
		}
		if (is_file($A)){
			include $A;
			$action=$b."Action";
			@$controller = new $action();
			if(method_exists($controller, $c)){
				$controller->$c();
			}else {
				exit(&#39;方法不在&#39;);
			}
		}else {
			exit(&#39;类不在&#39;);
		}

	}
	/**
	 * 解析为$_GET全局变量
	 */
	function pathinfo(){
		$pathinfo=(array_filter(explode(&#39;/&#39;,$this->url)));
		$count=count($pathinfo);
		for($foo=1;$foo<$count;$foo+=2){
$_GET[$pathinfo[$foo]]=($foo+2)==$count?array_shift(explode(&#39;.&#39;,$pathinfo[$foo+1])):$pathinfo[$foo+1];
		}
	}
	/**
	 * 重排数组
	 * @param unknown_type $array
	 */
	function Reorder($array){
		$i=0;
		foreach ($array as $row){
			$a[$i++]=$row;
		}
		return $a;
	}
	function __destruct(){
		
	}
}
Copy after login

                   

 以上就是PHP路由代码的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template