Slim 框架学习,第十七天 _Router(八)
来源:互联网 发布:淘宝最毒的差评语 编辑:程序博客网 时间:2024/06/14 08:06
导读,今天我们紧接着前几天的内容,学习 Slim/Route.php 类的功能
先看一下该类被调用的地方
在 Slim/Router.php 类中的 createRoute 方法中 protected function createRoute($methods, $pattern, $callable) { $route = new Route($methods, $pattern, $callable, $this->routeGroups, $this->routeCounter); if (!empty($this->container)) { $route->setContainer($this->container); } return $route; }
首先我们看下Slim/Route.php 类的构造函数
public function __construct($methods, $pattern, $callable, $groups = [], $identifier = 0) { $this->methods = is_string($methods) ? [$methods] : $methods; $this->pattern = $pattern; $this->callable = $callable; $this->groups = $groups; $this->identifier = 'route' . $identifier; }
下面我们分别看一下,每个传入参数的值这里以http://localhost:8080/hello/world 为例子
$method
array(1) { [0]=> string(3) "GET"}
$pattern
string(13) "/hello/{name}"
$callable
object(Closure)#19 (2) { ["this"]=> object(Slim\Container)#3 (7) { ["defaultSettings":"Slim\Container":private]=> array(7) { ["httpVersion"]=> string(3) "1.1" ["responseChunkSize"]=> int(4096) ["outputBuffering"]=> string(6) "append" ["determineRouteBeforeAppMiddleware"]=> bool(false) ["displayErrorDetails"]=> bool(false) ["addContentLengthHeader"]=> bool(true) ["routerCacheFile"]=> bool(false) } ["values":"Pimple\Container":private]=> array(11) { ["settings"]=> object(Slim\Collection)#20 (1) { ["data":protected]=> array(7) { ["httpVersion"]=> string(3) "1.1" ["responseChunkSize"]=> int(4096) ["outputBuffering"]=> string(6) "append" ["determineRouteBeforeAppMiddleware"]=> bool(false) ["displayErrorDetails"]=> bool(false) ["addContentLengthHeader"]=> bool(true) ["routerCacheFile"]=> bool(false) } } ["environment"]=> object(Closure)#8 (1) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } } ["request"]=> object(Closure)#9 (2) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } ["parameter"]=> array(1) { ["$container"]=> string(10) "" } } ["response"]=> object(Closure)#10 (2) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } ["parameter"]=> array(1) { ["$container"]=> string(10) "" } } ["router"]=> object(Slim\Router)#21 (8) { ["container":protected]=> *RECURSION* ["routeParser":protected]=> object(FastRoute\RouteParser\Std)#22 (0) { } ["basePath":protected]=> string(0) "" ["cacheFile":protected]=> bool(false) ["routes":protected]=> array(0) { } ["routeCounter":protected]=> int(0) ["routeGroups":protected]=> array(0) { } ["dispatcher":protected]=> NULL } ["foundHandler"]=> object(Closure)#12 (1) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } } ["phpErrorHandler"]=> object(Closure)#13 (2) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } ["parameter"]=> array(1) { ["$container"]=> string(10) "" } } ["errorHandler"]=> object(Closure)#14 (2) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } ["parameter"]=> array(1) { ["$container"]=> string(10) "" } } ["notFoundHandler"]=> object(Closure)#15 (1) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } } ["notAllowedHandler"]=> object(Closure)#16 (1) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } } ["callableResolver"]=> object(Closure)#17 (2) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } ["parameter"]=> array(1) { ["$container"]=> string(10) "" } } } ["factories":"Pimple\Container":private]=> object(SplObjectStorage)#4 (1) { ["storage":"SplObjectStorage":private]=> array(0) { } } ["protected":"Pimple\Container":private]=> object(SplObjectStorage)#5 (1) { ["storage":"SplObjectStorage":private]=> array(0) { } } ["frozen":"Pimple\Container":private]=> array(2) { ["settings"]=> bool(true) ["router"]=> bool(true) } ["raw":"Pimple\Container":private]=> array(2) { ["settings"]=> object(Closure)#6 (2) { ["static"]=> array(2) { ["userSettings"]=> array(0) { } ["defaultSettings"]=> array(7) { ["httpVersion"]=> string(3) "1.1" ["responseChunkSize"]=> int(4096) ["outputBuffering"]=> string(6) "append" ["determineRouteBeforeAppMiddleware"]=> bool(false) ["displayErrorDetails"]=> bool(false) ["addContentLengthHeader"]=> bool(true) ["routerCacheFile"]=> bool(false) } } ["this"]=> *RECURSION* } ["router"]=> object(Closure)#11 (2) { ["this"]=> object(Slim\DefaultServicesProvider)#7 (0) { } ["parameter"]=> array(1) { ["$container"]=> string(10) "" } } } ["keys":"Pimple\Container":private]=> array(11) { ["settings"]=> bool(true) ["environment"]=> bool(true) ["request"]=> bool(true) ["response"]=> bool(true) ["router"]=> bool(true) ["foundHandler"]=> bool(true) ["phpErrorHandler"]=> bool(true) ["errorHandler"]=> bool(true) ["notFoundHandler"]=> bool(true) ["notAllowedHandler"]=> bool(true) ["callableResolver"]=> bool(true) } } ["parameter"]=> array(3) { ["$request"]=> string(10) "" ["$response"]=> string(10) "" ["$args"]=> string(10) "" }}
$groups
array(0) {}
$identifier
int(0)
这里的重点,不用说就是$callable,存放的是container 容器对象
最终返回给Router 的就是 该route 对象。
结束语:今天先学习到这里,明天继续。如果对路由加载不是很清楚的,可以看前面的文章。我的思路是,先整体梳理,然后拆开讲的细节。
阅读全文
0 0
- Slim 框架学习,第十七天 _Router(八)
- Slim 框架学习,第十天 _Router(一)
- Slim 框架学习,第十一天 _Router(二)
- Slim 框架学习,第十三天 _Router(四)
- Slim 框架学习,第十五天 _Router(六)
- Slim 框架学习,第十八天 _Router(九)
- Slim 框架学习,第十九天 _Router(十)
- Slim 框架学习,第十二天 _Router(三)
- Slim 框架学习,第十四天 _Router(五)
- Slim 框架学习,第十六天 _Router(七)
- Slim 框架学习,第七天 _Container(四)
- .net学习第十七天
- Java学习第十七天
- 第十七天学习笔记
- Java学习第十七天
- Python学习---第十七天
- 【黑马程序员】集合框架(三)Map 第十七天
- 黑马程序员 —— JavaAPI_集合框架 (第十七天)
- 516. Longest Palindromic Subsequence
- Redux环境设置
- 稳定排序_ALDS1_2_C:Stable Sort
- AR实战开源项目——Miku和“极乐净土”
- 我们都很好
- Slim 框架学习,第十七天 _Router(八)
- 如何在excel中设置下拉菜单
- daemon线程
- JDBC Java数据库连接 2 2017年12月20日 22:45:56
- 密码学原理_Crypto++实现一次性密码本(OTP)
- extract-text-webpack-plugin配置出错的解决办法
- 杂货边角(6):Windows的数据类型和编译器固定数据类型对照
- 学Python(6)—日期计算案例
- latex 页眉插入图片logo