我正在研究laravel项目以学习框架,我在脑海中有一个关于路由的问题
路由器是单件类吗?因为我在route.php
文件中尝试了以下内容
$route1 = App::make('router');
$route2 = App::make('router');
$route3 = App::make('router');
$route4 = App::make('router');
$route1->get('/r1', function(){
echo "route 1";
});
$route2->get('/r2', function(){
echo "route 2";
});
$route3->get('/r3', function(){
echo "route 3";
});
$route3->get('/r4', function(){
echo "route 4";
});
var_dump($route1->getRoutes());
如您所见,我创建了四个路由器类对象,每个对象添加一个路由。最后一行打印$route1
对象的路由,输出为。
object(Illuminate\Routing\RouteCollection)[112]
protected 'routes' =>
array (size=2)
'GET' =>
array (size=4)
'r1' =>
object(Illuminate\Routing\Route)[120]
...
'r2' =>
object(Illuminate\Routing\Route)[122]
...
'r3' =>
object(Illuminate\Routing\Route)[124]
...
'r4' =>
object(Illuminate\Routing\Route)[126]
...
输出显示$route1
对象具有由$route2
,$route3
和$route4
个对象创建的其他路径。
溃败如何在他们之间共享?
答案 0 :(得分:2)
这里有两个组件路由和路由集合。当您注册路线时,他们都会被添加到路线集合中。最好的方法是通过查看symfony路径组件。 http://symfony.com/doc/current/components/routing/introduction.html
您有路线,路线收集,请求和网址匹配。
您可以创建路线并将其收集到路线集合中。
获取请求网址并使用匹配器将网址与路径匹配。