欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php 简单的路由器代码

程序员文章站 2022-05-10 18:17:32
...

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 解析地址
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(
				'module' => $this->module,
				'action' => $this->action,
			);
			return $this->getObject($made , 'webApp');
		} 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 = '/'.trim( _URI_ ,'/').'/';
		if( isset($rules) )
		{
			foreach ($rules as $key => $val)
			{
				if(preg_match($val[0], $url) )
				{
					$mod    = isset($val[1]['mod'])    ? $val[1]['mod']    : $mod;
					$action = isset($val[1]['action']) ? $val[1]['action'] : $action;
				}
				foreach ( $val[2] as $key => $value )
				{
					if ( !(strpos($value, '#') === FALSE) )
					{
						preg_match("$value", $url, $result);
						$param[$key] = isset($result[1]) ? $result[1] : '';
					} else {
						$param[$key] = $value;
					}
				}
			}
		}

		$made = array(
			'module' => $mod,
			'action' => $action,
			'param'  => $param
		);
		return $this->getObject($made , 'webApp');
	}
}