Не понимаю паттерн MVC. Что почитать/посмотреть?

Посмотрел несколько видео на ютубе и мало чего понял.
У меня сразу несколько вопросов:
1) Зачем нужен контроллер, если основную работу делает модель и шаблон?
2) Обязательно ли тут ООП использовать?
3) Как именовать методы классов, многие ставят приставку action... к методу.
Имена методов в контроллере совпадают с именами методов в модели?
4) MVC это панацея на сегодняшний день? Его постоянно пихают в свои проекты даже новички.
  • Вопрос задан
  • 1052 просмотра
Решения вопроса 7
FanatPHP
@FanatPHP
Чебуратор тега РНР
Как всегда, набежало "специалистов"-попугаев, повторяющих заученные фразы, но так и не понявших ни что такое сам паттерн, ни вопроса, который был задан.

Хотя ответ очень простой и первый вопрос автора даёт очень простую подсказку.

Вся суть эмвэцэ в том, что это всего лишь интерфейс. Штепсель. Розетка, через которую твое приложение подключается к веб. Веб-интерфейс твоего приложения.

То есть к самому приложению, если подумать, отношения не имеет.

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

При этом модель - это не убогий интерфейс к таблице в бд, как думают все попугаи. А собственно все приложение и есть. Это ещё называется бизнес-логикой.

Из всего этого становится очевидно, что этот загадочный паттерн в сущности составляет мизерную долю кода. И понимание эмвэцэ никак не поможет написать само приложение. он вообще не про это. Понимание поможет только меньше накосячить, перемешав веб-интерфейс и бизнес-логику.

Ответ с картинками и видео с ютюбе https://qna.habr.com/answer?answer_id=1475989#answ...
Ответ написан
mvc-process-170839.png
<?php
class Model
{
    public $string;
    public function __construct(){
        $this->string = “MVC + PHP = Awesome, click here!”;
    }
}
<?php
class View
{
    private $model;
    private $controller;
    public function __construct($controller,$model) {
        $this->controller = $controller;
        $this->model = $model;
    }
    public function output() {
        return '<p><a href="mvc.php?action=clicked"' . $this->model->string . "</a></p>";
    }
}
<?php
class Controller
{
    private $model;
    public function __construct($model){
        $this->model = $model;
    }
    public function clicked() {
        $this->model->string = “Updated Data, thanks to MVC and PHP!”;
    }
}

<?php
$model = new Model();
$controller = new Controller($model);
$view = new View($controller, $model);
if (isset($_GET['action']) && !empty($_GET['action'])) {
    $controller->{$_GET['action']}();
}
echo $view->output();


https://www.internet-technologies.ru/articles/shab...
Ответ написан
SerafimArts
@SerafimArts
Senior Notepad Reader
MVC под веб реализовать крайне сложно. Всё что вы там видели, либо вообще далеки от правды, либо жалкая пародия: https://habr.com/ru/post/321050/ Этот самый MVP ныне принято называть "MVC с пассивной моделью" из-за подобных постов/видосиков/проч от тех, кто не понимает о чём говорит. Слишком сильно это заблуждение вошло в массу. В жизни же используется немного модифицированный MVP (Laravel, Symfony, Yii, etc) и ADR (Laravel).

Вот максимально приближённый вариант классического MVC (или MVC с активными моделями): https://github.com/SerafimArts/real-mvc-app
Ответ написан
Комментировать
E1ON
@E1ON
Programming, Gamedev, VR
Это простой паттерн)
Контроллер нужен для обработки запросов, тебе же нужно где то обрабатывать запросы от пользователей, и на их основе ты уже получаешь данные из модели и отправляешь их во вьюху.

Могу посоветовать изучить фреймворк CodeIgniter, он очень простой, там как раз используется паттерн MVC.
Я думаю он хорошо подойдет, что бы понят как работать с этим паттерном.
Но сильно на нём лучше не зацикливаться, фреймворк очень устарел.
Ответ написан
Big_Alex
@Big_Alex
молод и перспективен
По пунктам:
1. Разверни последние две буквы ( MVC => MCV ). Так понятней ?
2. Нет. Но если найдут - бить будут больно и ногами..
3. PSR..
4. Альтернативы ?..

P.S: Статья на Википедии вполне доходчиво поясняет..
Ответ написан
Комментировать
@asd111
1. В контроллере связывается модель, её обработка и вью.
2. На php обязательно.
3. Как угодно, в зависимости от требований фреймворка.
4. Не панацея, есть еще MVVM и куча тому подобного. Но в целом MVC популярен в php.
Ответ написан
Комментировать
@Just__Den
FULL STACK
Всё разжёвано в деталях

https://rutracker.net/forum/viewtopic.php?t=5169159

исходники в комментах
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 19:18
50000 руб./за проект
24 апр. 2024, в 19:05
15000 руб./за проект
24 апр. 2024, в 18:39
80000 руб./за проект