> 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 학습자의 빠른 성장을 도와주세요!