Как laravel "разбирает" маршруты на составные части?
Стало любопытно, а каким образом laravel парсит маршруты и понимает какой маршрут сопоставить с правильным url? Например, что url
www.ru/post/100/comments/500
Должен обработаться соответствующим маршрутом?
Route::get('/posts/{post}/comments/{comment}', [NameConroller::class, 'show']);
На первый взгляд кажется, что
- мы должны входящий маршрут разбить(explode например) по /.
- Потом "найти" все маршруты, в которых первая часть начинается с /post
- Из найденных на предыдущем пункте маршрутов мы должны понять(не очевидно - как?), что /{post} соответствует любому числу. И т.д.
Возможно, кто-то копался в сорцах или просто знает как оно устроено? Было бы интересно узнать)
Ответы (1 шт):
Автор решения: KordDEM
→ Ссылка
Может кому пригодится. Laravel преобразует маршрут в регулярное выражение и ищет по всем имеющимся роутам. Например роут
/posts/{post}/comments/{comment}
преобразуется в
{^/posts/(?P<post>[^/]++)/comments/(?P<comment>[^/]++)$}sDu