ФорумПрограммированиеPHP для идиотовPHP и ООП → MVC ещё разок.

MVC ещё разок.

  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz Авг. 13, 2009, 5:40 п.п.

    Доброго.

    Конкретные вопросы :-) :
     - задачи роутера
     - авторизация скрипта в БД. Контроллер или роутер.
     - информация о юзере (логин/пароль к БД, ФИО, права и т.д.) где хранить?
         Отдельный синглтон или в родителе всех контроллеров?
     - отключение кнопочек/ссылочек в зависимости от прав юзера.
         Умный VIEW или контроллер должен сказать, что и где отключить/включить?
         
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz Авг. 13, 2009, 5:59 п.п., спустя 19 минут 42 секунды

    Отвечу как начинащий, дабы потом сверится с опытными + думаю таки ответы будут правильными:

    1. задача роутера - отправить пользователя на нужную страницу/загрузить нужный скрипт (модуль). Тут же может быть разбор УРЛов при ЧПУ
    2. Авторизация в контроллере, так как она может и не понадобиться, потому котроллер решит коннектится ли к БД или нет. Это, конечно же, идеальный вариант. Но можно сделать и отдельным модулем.
    3. Инфо о юзере - хз.
    4. Умный ВЬЮ - ппц, так как требует совмещение большого кол-ва логики и отображения. При таких раскладах теряется смысл "модель-контроллер-вьювер". Следовательно - контроллер это должен делать.
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz Авг. 13, 2009, 6:05 п.п., спустя 6 минут

    Упустил один момент:
    Для каждого юзера заведен юзер в БД (это не форум на mySQL).
    Пароль юзера мне неизвестен. Корректность авторизации юзера проверяется успешностью его коннекта к БД.
    Может и убого, но обращения к БД будут в 99% случаев.

    По авторизации. Я имею ввиду авторизацию не юзера на сайте, а скрипта в БД.
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz Авг. 13, 2009, 6:10 п.п., спустя 5 минут 13 секунд

    По авторизации. Я имею ввиду авторизацию не юзера на сайте, а скрипта в БД.

    авторизация == соединение с базой ?
    если да, то делаешь синглтон класс типа Database
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz Авг. 13, 2009, 6:18 п.п., спустя 7 минут 32 секунды

    NRG
    Да "авторизация == соединение с базой", даже "авторизация === соединение с базой"
    Синглтон уже есть.

    Влепить соединение прямо туда в конструктор?
    Тогда при авторизации юзера в системе:
      коннект к БД гостем
       чтение прав и т.д.
      вызов контроллера "авторизация" (
        разрушаем синглтон
        пытаемся создать теперь с логин/пароль авторизации
        Если удачно, то продолжаем дальше, иначе …. (разрушить и опять создать под гостем? или как?)
      )

    А по остальным пунктам, что скажете?
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz Авг. 13, 2009, 6:30 п.п., спустя 12 минут 13 секунд

    Влепить соединение прямо туда в конструктор?

    куда тебе удобно туда и влепи.

    class Database при инициализации(первой) создает соединение и хранит его у себя до конца выполнения.
    и класс датабейз вызывается только при необходимости

    относительно прав советую посмотреть сторонние решения к примеру Zend ACL
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz Авг. 13, 2009, 6:31 п.п., спустя 1 минуту 3 секунды

    2. в смысле подключение к бд? роутер если выбор между роутером и контроллером.
    3. можно создать объект и в нем хранить всю инфу, а сам объект засунуть в регистри, чтоб был везде доступен. слишком много синглтонов - пиздец.
    4. я делаю так: контроллер собирает всю инфу из бд, там как надо обрабатывает, и отправляет в вью. а там уже проверяется, если авторизирован - то одно, если админ - то другое и тп
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz Авг. 13, 2009, 7 п.п., спустя 28 минут 47 секунд

    Система прав уже реализована

    Регистри … вместо него у меня у праотца контроллеров ряд полей-классов типа Session – там и храню сейчас и права и инфу юзера и логин/пароль юзера. И, капут как, это стало неудобно.

    Если подключение к БД (неудачно я авторизацией это дело назвал) спихнуть в роутер,
    то исчезает заморочка с подключениями при авторизации юзера в системе.

    Блин. Как за код сяду - куча вопросов "куда" "как". А тут сижу - всё понятно :-)

    Завтра будет продолжение :-)








  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz Авг. 13, 2009, 7:04 п.п., спустя 4 минуты 27 секунд

    aivee, считаю все твои пункты абсолютно неправильными. Причину смотри в моем посте. Но это ИМХО.

    AndryG, про авторизацию юзеров ничего и не говорил. Я тут не очень представляю что лучше. А говорил относительно коннекта к БД. И, как сказал NRG, правильней его вызывать тогда, когда он потребуется, и только один раз.
    А вообще авторизация юзера проверяется коннектом к БД уже после самого коннекта. И не нужно делать…
    Тогда при авторизации юзера в системе:
     коннект к БД гостем
      чтение прав и т.д.
     вызов контроллера "авторизация" (
       разрушаем синглтон
       пытаемся создать теперь с логин/пароль авторизации
       Если удачно, то продолжаем дальше, иначе …. (разрушить и опять создать под гостем? или как?)

    Так как это ппц какой-то. Просто проверка на авторизированность. а уже после этого создаешь любые (нужные тебе) объекты относительно юзера (в зависимости от того, гость он получится или таки авторизированный).
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 13, 2009, 7:09 п.п., спустя 4 минуты 25 секунд


    2. в смысле подключение к бд? роутер если выбор между роутером и контроллером.
    3. можно создать объект и в нем хранить всю инфу, а сам объект засунуть в регистри, чтоб был везде доступен. слишком много синглтонов - пиздец.
    4. я делаю так: контроллер собирает всю инфу из бд, там как надо обрабатывает, и отправляет в вью. а там уже проверяется, если авторизирован - то одно, если админ - то другое и тп
    3. объясни почему это пиздец?
    Спустя 104 сек.
    NRG, интересная идея в зендасл. но там же ебануться сколько кода будет левака :(

    имхо удобнее просто в бд хранить в каком то виде этот пизедц и считывать это дело по бырому
    Сапожник без сапог
  • AndryG

    Сообщения: 237 Репутация: N Группа: Адекваты

    Spritz Авг. 13, 2009, 7:12 п.п., спустя 3 минуты 21 секунду

    А вообще авторизация юзера проверяется коннектом к БД уже после самого коннекта. И не нужно делать..
    читать так
    А вообще возможность авторизации юзера проверяется коннектом к БД(под новым логином) уже после самого коннекта синглотона к БД (под гостем).

    Что значит просто проверка

    Givi, про вьюшку подумайте контроллеру - "бизнесс-логика",а вьюшке - "логика отображения".
    Кому из них отдать "если нет права удалять, то кнопку удалить сделать неактивной" ?

    Ответ однозначен - вьюшке.

    А вопрос я тут задал, ибо ответ этот однозначен только при простых условиях.
     А если условие звучит "юзер может редактировать только записи, которые были созданы коллегой из его-же отдела и дата создания записи после поступления юзера на работу".

    Пошёл писать и набирать вопросы
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz Авг. 13, 2009, 7:14 п.п., спустя 1 минуту 45 секунд

    NRG, интересная идея в зендасл. но там же ебануться сколько кода будет левака :(

    phpdude, я же не сказал использовать зенд.
    я просто посоветовал ТСу посмотреть пример реализации.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 13, 2009, 7:15 п.п., спустя 1 минуту 26 секунд


    NRG, интересная идея в зендасл. но там же ебануться сколько кода будет левака :(

    phpdude, я же не сказал использовать зенд.
    я просто посоветовал ТСу посмотреть пример реализации.
    я и не придерался! чмоки)
    Спустя 14 сек.
    AndryG, вьюшке однозначно!
    Сапожник без сапог
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz Авг. 13, 2009, 7:17 п.п., спустя 1 минуту 33 секунды

    я и не придерался! чмоки)

    и тебе чмоки)))
    чтоб приехал в Киев на пыхаслет!!!11
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 13, 2009, 7:22 п.п., спустя 4 минуты 56 секунд


    я и не придерался! чмоки)

    и тебе чмоки)))
    чтоб приехал в Киев на пыхаслет!!!11
    вы ко мне, у меня 3 бутылки шампусика есть! ;) ыыы))
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!