- 论坛徽章:
- 0
|
php 解析地址
[PHP]代码- <?php
- /**
- * 路由器【核心文件】
- * @author hxm
- * @version 1.0
- * @since 2015.05.04
- */
- class Router extends Object
- {
- public $module = 'indexAction'; //缺省控制器类名
- public $action = 'index'; //控制器缺省方法
- public $r = true; //是否可以自定义
-
- /**
- * 分解路由规则
- *
- * @access public
- * @return array
- */
- public function path()
- {
- if ( trim(_URI_,'/') )
- {
- $url = explode('/', _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(
- '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');
- }
- }
复制代码 |
|