首页 > php教程 > php手册 > 正文

php 简单的路由器代码

WBOY
发布: 2016-06-06 19:38:27
原创
838 人浏览过

php解析地址 无 ?php/** * 路由器【核心文件】 * @author hxm * @version 1.0 * @since 2015.05.04 */class Router extends Object{public $module = 'indexAction'; //缺省控制器类名public $action = 'index'; //控制器缺省方法public $r = true; //是否可

php 解析地址
<?php
/**
 * 路由器【核心文件】
 * @author hxm
 * @version 1.0
 * @since 2015.05.04
 */
class Router extends Object
{
	public  $module = &#39;indexAction&#39;;   //缺省控制器类名
	public  $action = &#39;index&#39;;         //控制器缺省方法
	public  $r      = true;            //是否可以自定义
	
	/**
	 * 分解路由规则
	 *
	 * @access	public
	 * @return	array
	 */
	public function path()
	{
		if ( trim(_URI_,&#39;/&#39;) )
		{
			$url = explode(&#39;/&#39;, _URI_);
			$this->module = $url[1];
			$this->action = isset($url[2]) && !empty($url[2]) ? $url[2] : $this->action;
		} else {
			$this->module = $this->action;
		}
		
		if($this->r == false )
		{
			$made = array(
				&#39;module&#39; => $this->module,
				&#39;action&#39; => $this->action,
			);
			return $this->getObject($made , &#39;webApp&#39;);
		} else {
			return $this->rewrite($this->module, $this->action);	
		}
	}
	
	/**
	 * 重新定义框架重写规则
	 *
	 * @access	private
	 * @param	string	$mod	控制器名
	 * @param	string	$action	请求的操作
	 * @param   string  $route  规则文件
	 * @return	array
	 */
	private function rewrite( $mod , $action )
	{
		$file = $this->route();
		require $file;
		$url = &#39;/&#39;.trim( _URI_ ,&#39;/&#39;).&#39;/&#39;;
		if( isset($rules) )
		{
			foreach ($rules as $key => $val)
			{
				if(preg_match($val[0], $url) )
				{
					$mod    = isset($val[1][&#39;mod&#39;])    ? $val[1][&#39;mod&#39;]    : $mod;
					$action = isset($val[1][&#39;action&#39;]) ? $val[1][&#39;action&#39;] : $action;
				}
				foreach ( $val[2] as $key => $value )
				{
					if ( !(strpos($value, &#39;#&#39;) === FALSE) )
					{
						preg_match("$value", $url, $result);
						$param[$key] = isset($result[1]) ? $result[1] : &#39;&#39;;
					} else {
						$param[$key] = $value;
					}
				}
			}
		}

		$made = array(
			&#39;module&#39; => $mod,
			&#39;action&#39; => $action,
			&#39;param&#39;  => $param
		);
		return $this->getObject($made , &#39;webApp&#39;);
	}
}
登录后复制
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!