参数Laravel路由的使用方式,来效仿一个简单的路由实现方式class Route

{

/**

* @var $_instance // 实例

*/

private static $_instance = null;

/**

* @var $_currentPath // 当前URL中的地址

*/

private $_currentPath = '';

/**

* @var $_prefix // URL地址中前缀

*/

private $_prefix = '';

private function __construct($currentPath)

{

$this->_currentPath = $currentPath;

}

// 通过静态方法来进行Route路由实例化

static function getInstance($currentPath)

{

if( is_null(self::$_instance) ){

self::$_instance = new self($currentPath);

}

return self::$_instance;

}

/**

* 实现GET请求的路由访问

*

* @param string $path //访问路由规则(路径)

* @param Closure $callback 匿名回调函数

*

* @return Route

*/

public function get($path,\Closure $callback)

{

if( !empty($this->_prefix) ){

$path = '/'.$this->_prefix.$path;

}

if( $path == $this->_currentPath ){

echo $callback();

exit;

}

return $this;

}

/**

* 实现路由前缀设定

*

* @param string $prefix //访问路由前缀(路径)

*

* @return Route

*/

public function prefix($prefix)

{

$this->_prefix = $prefix;

return $this;

}

/**

* 实现路由分组

*

* @param Closure $callback 路由组的具体实现

*

* @return Route

*/

public function group(\Closure $callback)

{

$callback($this);

return $this;

}

}

调用示例:// 通过GET中s参数模拟路由规则的访问

$currentPath = empty($_GET['s']) ? '/index/index' : $_GET['s'];

$route = Route::getInstance($currentPath);

// 实现流程:

// 1.判断当前访问的URL地址是否被设定

// 2.如果被设定则执行get方法中的$callback匿名函数

$route->get('/aaaa',function(){

return 'Route Http Get Called';

});

$route->get('/bbbb',function(){

return 'Route Http Get Called 2';

});

// 实现流程:

// 1.设定URL地址前缀:test

// 2.将路由前缀和get的路径规则进行拼接

// 3.执行group方法中$callback匿名函数

// 4.判断当前访问的URL地址是否符合设定的路径规则

// 5.如果被设定则执行get方法中的$callback匿名函数

$route->prefix('test')->group(function($route){

$route->get('/aaaa',function(){

return 'Route Group Http Get Called';

});

});

以上只是个实现思路,欢迎互相探讨交流!

php框架 路由_PHP框架开发之Route路由简单实现相关推荐

  1. Android监听作用,Android开发之CheckBox的简单使用与监听功能示例

    本文实例讲述了Android开发之CheckBox的简单使用与监听功能.分享给大家供大家参考,具体如下: activity_main.xml android:layout_width="ma ...

  2. Swift Web 开发之 Vapor - 路由(二)

    上篇文章带大家基本了解了一下开始一个 Vapor 项目的流程,本篇紧接着来说说在所有 Web 框架中都最关键的 "路由",因为 "路由" 模块在 Web 项目中 ...

  3. Swift Web 开发之 Vapor - 路由(二) 1

    上篇文章带大家基本了解了一下开始一个 Vapor 项目的流程,本篇紧接着来说说在所有 Web 框架中都最关键的 "路由",因为 "路由" 模块在 Web 项目中 ...

  4. 网站开发之DIV+CSS简单布局网站入门篇(五)

    这篇文章主要介绍如何使用DIV和CSS简单布局一个网站的首页,通常将网站划分为顶部(Logo.导航条).中部(页面主要内容.左右栏目).底部(制作方介绍.超链接).这是非常基础的一篇引入性文章,采用案 ...

  5. Android API开发之TTS开发之Android TTS简单使用

       Android提供了自动朗读支持.可以对指定文本内容进行朗读,从而发生声音:还允许把文本对应的音频录制成音频文件,保存到本地,方便以后播放.Android的自动朗读主要通过TextToSpeec ...

  6. android网游开发之socket的简单设计和实现

    对于普通应用的网络模块一般使用http文本协议,在android开发中使用http协议比较简单,sdk已经做了很好的封装了.而在游戏开发中,可以结合使用http和socket,当然了http协议底层也 ...

  7. JSP开发之JSP连接数据库简单实例

    首先嘞,咱们这里有一个需要下载的jar文件: mysql-connector-java-5.1.39-bin.jar 完事之后嘞,把它放到 tomcat 下 lib 目录里,然后我们就可以来开始尝试连 ...

  8. Python开发之pandas行和列的获取

    Python开发之pandas行和列的获取 0 1. 行和列的获取 1.1 根据索引获取行 1.2 根据条件获取行 1.3 获取列 2 区域选取 2.1 df.loc[] 2.1.1 行选取 2.1. ...

  9. iOS开发之AVKit框架使用

    2019独角兽企业重金招聘Python工程师标准>>> iOS开发之AVKit框架使用 一.引言 在iOS开发框架中,AVKit是一个非常上层,偏应用的框架,它是基于AVFounda ...

最新文章

  1. linux下如何修改根口令
  2. linux内核态real cred,Linux内核实验报告——实验5.doc
  3. org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 285; cvc-elt.1.a: 找不到元素 ‘beans‘ 的声明。
  4. uos安装方法_国产UOS(统一操作系统),虚拟机安装体验
  5. 高德软件有限公司python试题 及 答案
  6. 尤克里里怎么样_尤克里里入门简单教程
  7. 你竟是这样的月饼-今年中秋节折腾的月饼2.0
  8. 软件测试系统并发数,“并发用户数”、“系统用户数”和“同时在线用户数”之间的差别...
  9. JavaScript = TypeScript 入门
  10. Roslyn 静态分析
  11. 设计师经常逛的色彩搭配网站—配色方案吧
  12. ROS学习笔记之——MAC安装ubuntu虚拟机
  13. 树莓派的Python成功解决TypeError: Image data cannot be converted to float
  14. 如何更好地理解中间件和洋葱模型
  15. 人脸识别签到考勤系统毕业设计,人脸识别考勤系统设计与实现,人脸识别系统论文毕设作品参考
  16. FIR内插滤波器结构与代码实现
  17. 01背包经典例题详解
  18. 电子商务中数据分析的八大指标体系
  19. 手机测试软件 lg g5,LG G5评测:系统功能初体验
  20. 学习新概念英语3及以后

热门文章

  1. 分形之城:递归超典型例题,还没明白?手把手画给你看!
  2. android触摸事件触摸点坐标,Android开发——触摸事件TouchEvent详解及其应用
  3. 翻译 Windows Server 2016和System Center 2016 技术预览版4 使创新更容易
  4. mysql setautocommit_MySql 中的setAutoCommit方法
  5. tnsname.ora 个参数解释
  6. 对于以太网口作为下一条路由的理解
  7. 易混单词 expect VS except
  8. 河流逻辑结构图生成方法
  9. Cocos Creator 你不知道的细节
  10. [Serializable]在C#中的作用——实现.NET对象序列化