Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Laravel 5.2
Для аутентификации использую API VK.
Для этого использую пакет "socialite-providers/vkontakte".
Все сделал по инструкции https://laravel-news.ru/blog/tutorials/socialite-login.
Все работает отлично, но назрела необходимость подпилить кое-что (кроме имени, емейла и vk_id сохранять еще и url аватарки юзера), а значит разобраться детально как это работает.
Желание разобраться есть, но кое-чего не понимаю...
Начал с простого - открыл routes.php, увидел строчку
Route::get('/social_login/{provider}', 'SocialController@login');
ок, направляемся в контроллер SocialController, смотрим метод login():
public function login($provider)
{
return Socialite::with($provider)->redirect();
}
ок, смотрю на верх, вижу:
use Socialite;
хорошо, это я знаю, посмотрю в алиасах (config/app.php) что это за класс:
'Socialite' => Laravel\Socialite\Facades\Socialite::class,
открываю этот класс и вижу:
namespace Laravel\Socialite\Facades;
use Illuminate\Support\Facades\Facade;
class Socialite extends Facade
{
protected static function getFacadeAccessor()
{
return 'Laravel\Socialite\Contracts\Factory';
}
}
И тут я попадаю в тупик, потому что не понимаю, как это работает и каким образом мне разобраться куда направиться дальше.
Куда дальше идет вызов?
Пожалуйста, подскажите непутевому. Если объясните на пальцах - отлично. Направите на ресурс - тоже хорошо.
Изменено Yurri_87 (02.10.2017 08:00:29)
Не в сети
deleted
Изменено sam (04.10.2017 18:20:23)
Не в сети
Ты дошел до фасадов в ларавел (не путать с паттерном - фасад).
Заметь
extends Facade
Перейди в этот родительский класс Facade и увидишь магический метод __callStatic, который перенаправляет вызов любого метода этого класса на объект из IoC, а строка для поиска объекта берется из функции getFacadeAccessor();
Т.е. в каком-то из serviceprovider'ов, которые указаны в app.providers конфиге, есть явная установка app()->bind('Laravel\Socialite\Contracts\Factory', new MySuperClass());
Другими словами - фасад предоставляет статичный доступ к не статичным методам.
Изменено covobo (04.10.2017 18:44:04)
Не в сети
Страницы 1