jan*_*kal 0 php routing routes laravel laravel-routing
Laravel有这个漂亮的语法:
Route::{$method}('/user/{id}', "Controller@method")->name("user")
Run Code Online (Sandbox Code Playgroud)
但它背后的魔力是什么?
Route是一个Facade,Illuminate\Routing\Router它本身就有方法GET POST PUT DELTE等等.但是每个方法返回$this->addRoute()它本身返回的内容\Illuminate\Routing\RouteCollection::add(),最后返回一个名为的变量$route,其中包含Route.中间有一些步骤(路由实例的创建已经Router通过一种方法完成,然后将路由添加到路径集合中).
但最后,Illuminate\Routing\Route返回了一个类的对象.这是如何处理像链接这样的事情name()?是否写名字为它驻留在一个单独的对象$collection的Router?
在此先感谢您最有帮助的答案!
有趣的是,这并不总是可行的.在Laravel 4中,你无法从Route物体本身命名一条路线(虽然你可以做其他与路线更直接相关的东西),但现在你可以在5.
所以关于链接的快速入门:通过返回$this一个方法,你允许这种方法链接$route->name('whatever')->where('id', '\d+').我猜,你已经知道了.
所以门面的附加层是没有什么特别的-门面的get/ post的/ etc.方法只返回Route实例(最终,就像你说的那样!),这对于链接来说已经成熟了.
所以这里变得有趣.在Laravel 4中,a的命名Route只能在RouteCollection,而不是在Route自身上 - 这是因为RouteCollection管理Routes'的名字.如今,情况已不再如此.每个都Route存储自己的名称.
如果您查看RouteCollection该类,您将看到有一个方法refreshNameLoopups [ 2 ],它用作路由匹配机制的一部分,以获取每个路由的名称和缓存在本地进行快速查找.
所以这就是Route' 如何'告诉'它的父母RouteCollection它应该叫它:)
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |