#php #codeigniter
#php #codeigniter
Вопрос:
Я пишу библиотеку аутентификации для Code Igniter с использованием драйверов (в основном для практики).
Я пишу библиотеку так, чтобы она была расширяемой, поэтому я использую платформу драйверов.
В библиотеке есть несколько драйверов,
simple
(базовое имя пользователя / пароль),
facebook
,
twitter
,
google
У каждого драйвера есть свой собственный набор таблиц базы данных для разных методов аутентификации.
Вы можете вызвать $this->user->is('logged in')
, который запрашивает все допустимые драйверы, если пользователь вошел в систему.
или вы можете просто позвонить $this->user->facebook->is('logged in')
, чтобы узнать, вошел ли пользователь в систему через facebook и т. Д.
Теперь для метода simple
входа в систему вы захотите получить имя пользователя / пароль пользователя из базы данных.
для метода facebook
входа в систему вам нужно будет проверить, есть ли в базе данных токен facebook и т. Д. эти вызовы можно вызывать из драйверов или я должен создать модель для каждого драйвера?
Комментарии:
1. Почему не одна модель для всех библиотек? например, что-то вроде «auth_model»; но на самом деле зависит от того, насколько сложны эти модели.
2. Поскольку идея драйверов заключается в том, что их можно «вставить» без изменения ядра системы, например, скажем, кто-то хотел создать
basecamp
метод входа в систему, ему пришлось бы модифицироватьauth_model
модель, с помощью этого метода вы можете просто вставить файлы, и это не повлияет на другие методы!3. Что ж, это правда. Я действительно всегда использовал библиотеки вместо драйверов, поэтому я никогда не ставил перед собой эту проблему. Тогда, я думаю, вы можете сделать все в файле драйвера… В любом случае, нет ничего «незаконного» в том, чтобы не следовать «MVC» буквально, и если основной причиной здесь является инкапсуляция, я думаю, вам следует придерживаться вызовов db в драйверах, имхо
4. @DamienPirsy Пожалуйста, оставьте свой окончательный комментарий в качестве ответа, и я приму его, в противном случае я скоро удалю этот вопрос.