Метод prefix
находится в классе Illuminate\Routing\Router
.
Абсолютный путь в типичном приложении Laravel 5 будет:
vendor/laravel/framework/src/Illuminate/Routing/Router.php
Как найтиэто?
Вы, вероятно, знаете, что когда вы пишете Route::
, вы фактически используете фасад Laravel, который называется Route
.Оттуда вы можете найти ссылку на класс фасадов в официальной документации Laravel 5.4 по адресу https://laravel.com/docs/5.4/facades#facade-class-reference. Вот строка, которую вы ищете:
---------------------------------------------------------------
|Facade |Class |Service Container Binding |
---------------------------------------------------------------
|Route |Illuminate\Routing\Router |router |
---------------------------------------------------------------
Поток
- (защищенный) метод
prefix
обрабатывается __call@Router
.return (new RouteRegistrar($this))->attribute($method, $parameters[0]);
выполняется - вызывается метод
attribute@RouteRegistrar
и элемент 'prefix' => 'home'
добавляется в массив $this->attributes
- Поскольку метод
attribute@RouteRegistrar
возвращает $this
,Вызван метод group@RouteRegistrar
- Метод
group@RouteRegistrar
вызывает метод group@Router
- Вызывается метод
loadRoutes@Router
.Он проанализирует все маршруты, присутствующие в замыкании, то есть Route::get('/test', ...)
; - На этот раз метод
get
вызывается для класса, лежащего в основе Route
фасада, класса Router
.Метод get@Router
выполняется addRoute@Router
вызывается, что, в свою очередь, вызывает метод createRoute@Router
createRoute@Router
, вызывает newRoute@Router
с префиксом URI в качестве второго аргумента
Вы заметите, что метод prefix@Router
вызывает getLastGroupPrefix@Router
, который, очевидно, возвращает префикс последней группы.