LINUX.ORG.RU

Как правильно (лучше) реализовать желаемый фунционал

 , , socialite


0

1

Разрабатываю свой первый сайт. Появился нубский вопрос.

Прикручиваю авторизацию через соц.сети (Facebook, ВКонтакте) посредством Laravel\SocialiteProviders.

Его модель возвращает в ответном массиве поле 'name', содержащее имя+фамилия. Мне нужны имя (first_name) и фамилия (last_name) раздельно. Поизучал исходники. Сама модель предоставляет возможность изменить запрос внутри себя и получает от провайдера данные поля в JSON-формате, но потом, не понимаю зачем (видимо, чтобы исключить ошибки из ответа), в другом методе пересоздает вручную («ремапит») массив по полям, игнорируя поля, запрашиваемые пользователем:

Примерно такая цепочка для Facebook:

getUserByToken->$user($fields['first_name'])->JSON-decode->mapUserToObject->$user['name']->null

ВКонтакте:

getUserByToken->$user($fields['first_name', 'last_name'])->JSON-decode->mapUserToObject->$user['name']=$user['first_name'] . $user['last_name']

Собственно суть вопроса. Как более правильно (грамотно) допилить функционал?
1. Переписать исходники?
2. Наследовать класс и переписать метод mapUserToObject?
3. Добавить в существующий контроллер метод по разделению name на имя и фамилию.

Пошел по 1-ому. Но ведь, после обновления, заново придется переписывать. Второй - костыль. Третий - маразм. Особенно с ВКонтакте, который не предоставляет поле 'name'. Сначало склеить поля, потом снова разделить.

Подскажите, пожалуйста, знатоки. По какому пути технически грамотно нужно идти?



Последнее исправление: roiman (всего исправлений: 3)

Я бы выбрал маразм. Только почему метод вот так прямо в контроллере?

anonymous
()
Ответ на: комментарий от anonymous

В модели, конечно. Всё-таки маразм? Но бред же, считаю. В исходниках можно всё получить сразу. Не знаю почему они переписывают массив после JSon-ответа. Если правильно понимаю, в прошлых версиях этого не было.

roiman
() автор топика
Ответ на: комментарий от anonymous

man design patterns adapters decorators bridge

Хоть бы ссылки дал, названия книг. Оф.руководства так себе, без конкретики, описания классов, их методов и пр. Понимаю, что «носом тыкать» приятнее, но всё же...

Я изучил и прочитал:
1. Оф.мануалы
2. Никсон Р. Создаем динамические веб-сайты с помощью PHP
3. Зандстра М. PHP. Объекты, шаблоны и методики программирования
4. Stauffer M. Laravel Up and Running
5. Dayle Rees - Laravel - Code Smart

Дейли очень понравился. Отлично пишет. Но пока не всё охватил в книге по фреймворку. Стоффер - зануда.

Что еще можно почитать?

В общем, принял к сведению мнения Анонимусов и реализовал п.3 «Маразм». Спасибо тем, кто отписался.

roiman
() автор топика
Последнее исправление: roiman (всего исправлений: 2)

2-й способ и поискать альтернативную, более адекватную либу.
Или вписаться в разработку и сделать 1-й способ, но глобальный.

Shadow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.