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');

}

}

本文原创发布php中文网,转载请注明出处,感谢您的尊重!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部