2015-10-22 4 views
0

Я работаю над проектом laravel, чтобы узнать структуру, у меня возник вопрос о маршрутизации.
Является ли маршрутизатор одноэлементным классом? потому что я попробовать следующее в файле route.phplaravel 4.2 Объекты маршрутизатора

$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 объектов.
Как разделились между ними маршруты?

ответ

2

У вас есть два компонента: маршрут и коллекция маршрутов. Когда вы регистрируете маршрут, все они добавляются в коллекцию маршрутов. Лучшее, что вы можете показать, это увидеть компоненты маршрута symfony. http://symfony.com/doc/current/components/routing/introduction.html

У вас есть маршрут, коллекция маршрутов, запрос и идентификатор URL.

Вы создаете маршруты и собираете их в коллекции маршрутов.

Получить URL-адрес запроса и использовать сопряжение, чтобы он соответствовал URL-адресу маршрута.