Привет! Подскажите пожалуйста как устроен механизм доступа к статическим методам на примере laravel.
Вот например там есть php файл routes.php и в нем используется фасад Route::get/post/put/delete... Как это работает? В смысле класс Route использует свое namespace и при require routes.php в нем нет ключевого слова use для доступа к классу и его методам. Там просто пишутся роуты напрямую обращаясь к классу Route. Подскажите пожалуйста на примере как это работает, ведь как известно, при импорте (require) пространства имен не наследуются.
Проблема в том, что я никак не могу понять как из глобального пространства имен в импортированном. простом файле php получается доступ к классу, у которого есть свое пространство имен?
JhaoDa, По большому счету не в ларе дело. Я просто хочу понять механизм, по которому такое возможно. Я просто изучал код и увидел что в файле routes.php по пути "app\Http" не используется use. Это в 7 ларке уже используется а в 5.2.45 которой я копался нет.
LioneNET, по своему опыту могу подсказать, что нужно
1) Разобраться, как работает сервис контейнер
2) Разобраться со всеми паттернами, что в разделе фасадов описаны
3) Внимательно проанализировать стек вызовов той фасадной функции, которая интересует (бросить искусственное исключение и увидеть стек вызовов, через IDE и дебагер погулять по стеку вызовов)
Эти пункты не надо зубрить, просто сесть и вдумчиво почитать и поделать простые штуки для себя, так в памяти останется
По мне углубляться в деталях работы инструментов не стоит , главное знать как их применять. В данном случае в роуте ты ещё указываешь название контроллера и метода, вот так он и понимает запрос к какому именно методу адресовано.
Route::post('/report', 'ReportController@index')
Посмотрите внимательно тут по логике уже ясно куда запрос будет стучаться.