php 简单的路由器
程序员文章站
2022-06-06 19:49:27
...
php 解析地址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'); } }