• 技术文章 >php教程 >PHP源码

    PHP路由代码

    PHP中文网PHP中文网2016-05-25 17:13:55原创353
    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['URL_HTML_SUFFIX'];
    		//  获取当前路由参数对应的变量
    		$paths = (array_filter(explode('/',trim(preg_replace('/\.'.$suffix.'$/','',
    		$_SERVER['PHP_SELF']),'/'))));
    		if ($this->config['URL_PATHINFO_MODEL']==1){
    			define('/index.php/Article','/'.$paths[0].'/');
    		}elseif ($this->config['URL_PATHINFO_MODEL']==2){
    			define('/index.php/Article','/');
    		}
    		if (empty($paths[1])){
    			$paths[1]='index';
    		}
    		if (empty($paths[2])){
    			$paths[2]='index';
    		}
    		if (empty($paths[3])){
    			$paths[3]='index';
    		}
    		$this->Action($paths);
    	}
    	/**
    	 * 实例化操作
    	 */
    	function Action($paths){
    		if ($paths[1]==$this->config['TMPL_ADMIN_PATH']){
    			include APP_PATH.'/'.$this->config['TMPL_ADMIN_PATH'].'/commonAction.php';
    			$A=APP_PATH.'/'.$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('方法不在');
    			}
    		}else {
    			exit('类不在');
    		}
    
    	}
    	/**
    	 * 解析为$_GET全局变量
    	 */
    	function pathinfo(){
    		$pathinfo=(array_filter(explode('/',$this->url)));
    		$count=count($pathinfo);
    		for($foo=1;$foo<$count;$foo+=2){
    $_GET[$pathinfo[$foo]]=($foo+2)==$count?array_shift(explode('.',$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(){
    		
    	}
    }

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP,路由代码
    上一篇:安全的 URL 跳转 下一篇:PHP 通过 GSM Modem 收发短信

    相关文章推荐

    • 剖析PHP中的输出缓冲 flush之类• PHP抽象类和接口示例和区别• php学习笔记之面向对象编程• php 日期与日间之差函数• php经典分页函数_适合初学才

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网