一个简单的php路由类
更新时间:2016年05月29日 10:55:02 作者:imhuchao
这篇文章主要为大家详细介绍了一个简单的php路由类,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了php编写一个简单的路由类,供大家参考,具体内容如下
<?php namespace cmhc\Hcrail; class Hcrail { /** * callback function * @var callable */ protected static $callback; /** * match string or match regexp * @var string */ protected static $match; protected static $routeFound = false; /** * deal with get,post,head,put,delete,options,head * @param $method * @param $arguments * @return */ public static function __callstatic($method, $arguments) { self::$match = str_replace("//", "/", dirname($_SERVER['PHP_SELF']) . '/' . $arguments[0]); self::$callback = $arguments[1]; self::dispatch(); return; } /** * processing ordinary route matches * @param string $requestUri * @return */ public static function normalMatch($requestUri) { if (self::$match == $requestUri) { self::$routeFound = true; call_user_func(self::$callback); } return; } /** * processing regular route matches * @param string $requestUri * @return */ public static function regexpMatch($requestUri) { //处理正则表达式 $regexp = self::$match; preg_match("#$regexp#", $requestUri, $matches); if (!empty($matches)) { self::$routeFound = true; call_user_func(self::$callback, $matches); } return; } /** * dispatch route * @return */ public static function dispatch() { if (self::$routeFound) { return ; } $requestUri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); $requestMethod = $_SERVER['REQUEST_METHOD']; if (strpos(self::$match, '(') === false) { self::normalMatch($requestUri); } else { self::regexpMatch($requestUri); } } /** * Determining whether the route is found * @return boolean */ public static function isNotFound() { return !self::$routeFound; } }
下载地址:https://github.com/cmhc/Hcrail
希望本文所述对大家学习PHP程序设计有所帮助。
相关文章
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
这篇文章主要介绍了PHP+sqlite数据库操作的方法,简单分析了sqlite数据库的功能及相关操作技巧,包括创建,打开,插入,检索及错误提示等,需要的朋友可以参考下2016-05-05基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
这篇文章主要介绍了采集后数据处理的一点心得笔记,编码转换和正则匹配,基于preg_match_all,需要的朋友可以参考下2014-01-01
最新评论