首頁  >  文章  >  php教程  >  php 简单的路由器代码

php 简单的路由器代码

WBOY
WBOY原創
2016-06-06 19:38:27839瀏覽

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;);
	}
}
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn