参数Laravel路由的使用方式,来效仿一个简单的路由实现方式php
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'; }); });
以上只是个实现思路,欢迎互相探讨交流!this