Форум → Программирование → PHP для идиотов → PHP и ООП → MVC ещё разок.
MVC ещё разок.
Страницы: ← Следующая страница →
-
Доброго.
Конкретные вопросы :-) :
- задачи роутера
- авторизация скрипта в БД. Контроллер или роутер.
- информация о юзере (логин/пароль к БД, ФИО, права и т.д.) где хранить?
Отдельный синглтон или в родителе всех контроллеров?
- отключение кнопочек/ссылочек в зависимости от прав юзера.
Умный VIEW или контроллер должен сказать, что и где отключить/включить?
-
Авг. 13, 2009, 5:59 п.п., спустя 19 минут 42 секунды
Отвечу как начинащий, дабы потом сверится с опытными + думаю таки ответы будут правильными:
1. задача роутера - отправить пользователя на нужную страницу/загрузить нужный скрипт (модуль). Тут же может быть разбор УРЛов при ЧПУ
2. Авторизация в контроллере, так как она может и не понадобиться, потому котроллер решит коннектится ли к БД или нет. Это, конечно же, идеальный вариант. Но можно сделать и отдельным модулем.
3. Инфо о юзере - хз.
4. Умный ВЬЮ - ппц, так как требует совмещение большого кол-ва логики и отображения. При таких раскладах теряется смысл "модель-контроллер-вьювер". Следовательно - контроллер это должен делать. -
Авг. 13, 2009, 6:05 п.п., спустя 6 минут
Упустил один момент:
Для каждого юзера заведен юзер в БД (это не форум на mySQL).
Пароль юзера мне неизвестен. Корректность авторизации юзера проверяется успешностью его коннекта к БД.
Может и убого, но обращения к БД будут в 99% случаев.
По авторизации. Я имею ввиду авторизацию не юзера на сайте, а скрипта в БД. -
Авг. 13, 2009, 6:10 п.п., спустя 5 минут 13 секунд
По авторизации. Я имею ввиду авторизацию не юзера на сайте, а скрипта в БД.
авторизация == соединение с базой ?
если да, то делаешь синглтон класс типа Database -
Авг. 13, 2009, 6:18 п.п., спустя 7 минут 32 секунды
NRG
Да "авторизация == соединение с базой", даже "авторизация === соединение с базой"
Синглтон уже есть.
Влепить соединение прямо туда в конструктор?
Тогда при авторизации юзера в системе:
коннект к БД гостем
чтение прав и т.д.
вызов контроллера "авторизация" (
разрушаем синглтон
пытаемся создать теперь с логин/пароль авторизации
Если удачно, то продолжаем дальше, иначе …. (разрушить и опять создать под гостем? или как?)
)
А по остальным пунктам, что скажете? -
Авг. 13, 2009, 6:30 п.п., спустя 12 минут 13 секунд
Влепить соединение прямо туда в конструктор?
куда тебе удобно туда и влепи.
class Database при инициализации(первой) создает соединение и хранит его у себя до конца выполнения.
и класс датабейз вызывается только при необходимости
относительно прав советую посмотреть сторонние решения к примеру Zend ACL -
Авг. 13, 2009, 6:31 п.п., спустя 1 минуту 3 секунды
2. в смысле подключение к бд? роутер если выбор между роутером и контроллером.
3. можно создать объект и в нем хранить всю инфу, а сам объект засунуть в регистри, чтоб был везде доступен. слишком много синглтонов - пиздец.
4. я делаю так: контроллер собирает всю инфу из бд, там как надо обрабатывает, и отправляет в вью. а там уже проверяется, если авторизирован - то одно, если админ - то другое и тп -
Авг. 13, 2009, 7 п.п., спустя 28 минут 47 секунд
Система прав уже реализована
Регистри … вместо него у меня у праотца контроллеров ряд полей-классов типа Session – там и храню сейчас и права и инфу юзера и логин/пароль юзера. И, капут как, это стало неудобно.
Если подключение к БД (неудачно я авторизацией это дело назвал) спихнуть в роутер,
то исчезает заморочка с подключениями при авторизации юзера в системе.
Блин. Как за код сяду - куча вопросов "куда" "как". А тут сижу - всё понятно :-)
Завтра будет продолжение :-)
-
Авг. 13, 2009, 7:04 п.п., спустя 4 минуты 27 секунд
aivee, считаю все твои пункты абсолютно неправильными. Причину смотри в моем посте. Но это ИМХО.
AndryG, про авторизацию юзеров ничего и не говорил. Я тут не очень представляю что лучше. А говорил относительно коннекта к БД. И, как сказал NRG, правильней его вызывать тогда, когда он потребуется, и только один раз.А вообще авторизация юзера проверяется коннектом к БД уже после самого коннекта. И не нужно делать…
Тогда при авторизации юзера в системе:
коннект к БД гостем
чтение прав и т.д.
вызов контроллера "авторизация" (
разрушаем синглтон
пытаемся создать теперь с логин/пароль авторизации
Если удачно, то продолжаем дальше, иначе …. (разрушить и опять создать под гостем? или как?)
Так как это ппц какой-то. Просто проверка на авторизированность. а уже после этого создаешь любые (нужные тебе) объекты относительно юзера (в зависимости от того, гость он получится или таки авторизированный). -
Авг. 13, 2009, 7:09 п.п., спустя 4 минуты 25 секунд
3. объясни почему это пиздец?
2. в смысле подключение к бд? роутер если выбор между роутером и контроллером.
3. можно создать объект и в нем хранить всю инфу, а сам объект засунуть в регистри, чтоб был везде доступен. слишком много синглтонов - пиздец.
4. я делаю так: контроллер собирает всю инфу из бд, там как надо обрабатывает, и отправляет в вью. а там уже проверяется, если авторизирован - то одно, если админ - то другое и тпСпустя 104 сек.NRG, интересная идея в зендасл. но там же ебануться сколько кода будет левака :(
имхо удобнее просто в бд хранить в каком то виде этот пизедц и считывать это дело по быромуСапожник без сапог -
Авг. 13, 2009, 7:12 п.п., спустя 3 минуты 21 секунду
А вообще авторизация юзера проверяется коннектом к БД уже после самого коннекта. И не нужно делать..
читать так
А вообще возможность авторизации юзера проверяется коннектом к БД(под новым логином) уже после самого коннекта синглотона к БД (под гостем).
Что значит просто проверка
Givi, про вьюшку подумайте контроллеру - "бизнесс-логика",а вьюшке - "логика отображения".
Кому из них отдать "если нет права удалять, то кнопку удалить сделать неактивной" ?
Ответ однозначен - вьюшке.
А вопрос я тут задал, ибо ответ этот однозначен только при простых условиях.
А если условие звучит "юзер может редактировать только записи, которые были созданы коллегой из его-же отдела и дата создания записи после поступления юзера на работу".
Пошёл писать и набирать вопросы
-
Авг. 13, 2009, 7:14 п.п., спустя 1 минуту 45 секунд
NRG, интересная идея в зендасл. но там же ебануться сколько кода будет левака :(
phpdude, я же не сказал использовать зенд.
я просто посоветовал ТСу посмотреть пример реализации. -
Авг. 13, 2009, 7:15 п.п., спустя 1 минуту 26 секунд
я и не придерался! чмоки)NRG, интересная идея в зендасл. но там же ебануться сколько кода будет левака :(
phpdude, я же не сказал использовать зенд.
я просто посоветовал ТСу посмотреть пример реализации.Спустя 14 сек.AndryG, вьюшке однозначно!Сапожник без сапог -
Авг. 13, 2009, 7:17 п.п., спустя 1 минуту 33 секунды
я и не придерался! чмоки)
и тебе чмоки)))
чтоб приехал в Киев на пыхаслет!!!11 -
Авг. 13, 2009, 7:22 п.п., спустя 4 минуты 56 секунд
вы ко мне, у меня 3 бутылки шампусика есть! ;) ыыы))я и не придерался! чмоки)
и тебе чмоки)))
чтоб приехал в Киев на пыхаслет!!!11Сапожник без сапог
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!