За последние 24 часа нас посетили 26426 программистов и 1545 роботов. Сейчас ищут 798 программистов ...

Извращённое MVC

Тема в разделе "PHP для новичков", создана пользователем machetero, 6 апр 2016.

  1. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Честно признаться, после знакомства с MVC-фреймворками, такими как laravel 5 и yii 2, я стал хуже понимать MVC. Начнём по порядку с буквы М. Модели в ларавель(в yii я до них ещё не дошёл) - это не что-то, что содержит бизнес-логику приложения и ответственно за предоставления окончательных данных для шаблонов, это просто экземпляры ActiveRecord, вся бизнес-логика приложения находится в методах контроллеров. Теперь про роутер. Ещё при ознакомлении с MVC, у меня вызвало чувство диссонанса отсутствие буквы для такого важного компонента в абревиатуре MVC. Я Фаулера не читал, поэтому не знаю должен ли роутер быть частью паттерна, но примечательно, что буквы для него нету. По началу я думал, функцию роутера, как раз должен выполнять контроллер. Пишите, что вы думаете, по поводу этого всего.
     
  2. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Как-то неполноценно, развивай мысль.
    Я бы переделал под CMV, ибо во всём у меня получается именно так, но очерёдность видимо роли не играет или у кого-то именно такое представление.
     
  3. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Да я просто написал свои мысли. Может натолкну кого нибудь на свои мысли.
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Модель это данные, не обязательно база данных может у тебя класс с массивом

    что за бизнес логика? например?

    обычно он просто запускает контроллер и всё, видел примеры форм в Yii2 когда из контроллера вызывают модель и передают ей просто массив POST, GET или REQUEST (POST+GET)

    Добавлено спустя 2 минуты 15 секунд:
    ещё можно сделать контроллер и от него наследовать уже другие, и вот как бы в том первом можно что-то глобально менять
     
  5. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    ну бизнес-логикой называют, ту логику которая формирует данные(которые будут отрисованы в шаблонах), или например логика авторизации(может и не формировать данных для отрисовки).
    Вот если модель отдавала бы данные(которые окончательные, то что непосредственно надо вставить в шаблон), то можно смело бы вызывать модель, а не контроллер в роутере и отрисовывать вид.

    Добавлено спустя 3 минуты 6 секунд:
    всмысле контроллер мне кажеться, какой то не совсем нужной оболочкой в таком случае, которой ожно принебрегнуть
    Это кстати отличается от того что есть в ларавеле
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Бизнес-логику рекомендуют в дополнительный слой выделять, а в моделях да, только ActiveRecord или другой паттерн работы с данными. Хотя у меня логика в моделях, может я и не прав. Хотя я вообще по-разному пишу
     
  7. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Наследование контроллера

    ну контроллер может обрабатывать случаи переадресации, вывода ошибок, скажем так мелкую бизнес логику для конкретной MVC части

    Что там? Данные в контроллере нужно модифицировать из POST в другой формат перед передачей в модель?
     
  8. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Ты не один.
    У меня модельки есть подобие AR, но свой велосипед и помимо выгрузки данных, так же несут в себе операции по подгрузке зависимостей и, в некоторых случаях, представление данных этой же модели.
    Некогда меня укорили в том, что контроллер не должен содержать в себе код как таковой, он должен оперировать моделями и прочим, создавая рай для любителя побродить по ссылкам в IDE. Я полностью не отказался от своих грязных штучек, но заставил себя выносить кодопарашу в определённые для этого места. Стало меньше кода, и да, он теперь разбросан.
    У меня post/get не доходят до моделей. Мне кажется это не правильно. Модель есть сущность, которой должен руководить контроллер, на то он и контроллер, он управляет.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    MVC в чистом виде имеет смысл на демонообразных обработчиках запросов. В пхп очень помыты границы, и если ты вместо MVC хочешь сделать RMVC - то и делай спокойно.