Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 63

MVC - проверить схему

21.02.2014, 13:35. Показов 1487. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет

Сегодня пытаясь понять шаблон проектирования MVC попытался сделать схему данного шаблона и буду его описывать как он работает. Пожалуйста можете подсказать что правильно и что неправильно описано и сделано



1. Пользователь (Спанч Боб) открывает сайт например www.primer.ru

2. Запрос Спанч Боба приходит в контроллер (контроллер управляет всеми запросами пользователя) для дальнейшего распределения

3. После контроллер передает запрос в модель для обработки запроса Спанч Боба например, получить из баз данных некоторую информацию

4. После модель полученные данные передает обратно контроллеру а тот передает эти данные в представлении для упаковывания запроса и передачи его пользователю

5. Представление опять же передает контроллеру а тот его отправляет пользователю

Пожалуйста подскажите что правильно или всё ошибочно и если есть время то опишите пожалуйста доступным языком паттерн проектирования MVC
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2014, 13:35
Ответы с готовыми решениями:

Проверить, не противоречит ли решение логике MVC
Доброго времени суток! Кто знает подскажите пожалуйста: Вообщем ситуация такая, создал страничку с выводом всех статей. Где водится...

Проверить переданное get значение (MVC)
собсно вот: у нас есть массив, полученный таким образом class city { private $data = null; private function...

Проверить блок-схему.
program file_1; uses crt; Label m1; var n:integer; st1,st2:string; F:text; procedure vvod; begin assign(F,'rez.txt');

12
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
21.02.2014, 14:56
fwefwe, есть еще фронт-контроллер, который разбирает запрос пользователя и загружает нужный контролер и действие.

Добавлено через 50 секунд
Я имел ввиду — запускает действие (метод).
0
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 63
21.02.2014, 15:11  [ТС]
Razip, тогда будет два контроллера (бэкэнд и фронтэнд) и один модель и одно представление? или любое количество моделей и представлений?
0
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
21.02.2014, 15:49
fwefwe, фронт-контроллер выбирает нужный контроллер, этот контроллер работает с любым количеством моделей и представляет нужные данные в одном представлении.
0
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 63
21.02.2014, 15:59  [ТС]
тогда как понимаю должен быть только один фронт контроллер а тот выбирает соответствующие контроллеры из множества контроллеров а тот взаимодействует с любым количеством моделей и должно быть только одно представление?
0
268 / 268 / 109
Регистрация: 22.08.2013
Сообщений: 907
21.02.2014, 19:30
fwefwe, по идеи да. Но опять же, есть множество реализаций, и где-то чем-то они отличаются. Это наиболее популярная.
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
22.02.2014, 11:28
На схеме не хватает связи вид => модель.
Вид может (и должен) запрашивать данные модели.
0
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 63
22.02.2014, 11:39  [ТС]
спасибо за ответ
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
22.02.2014, 19:56
Цитата Сообщение от OnYourLips Посмотреть сообщение
На схеме не хватает связи вид => модель.
Вид может (и должен) запрашивать данные модели.
Вид ничего не должен запрашивать у модели. Иначе это контроллер. Вид использует данные модели.
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
22.02.2014, 22:57
Цитата Сообщение от Василий Макогон Посмотреть сообщение
Вид ничего не должен запрашивать у модели. Иначе это контроллер. Вид использует данные модели.
"Вид использует данные модели."
А я что говорю?
0
1 / 1 / 0
Регистрация: 24.10.2012
Сообщений: 63
24.02.2014, 06:35  [ТС]
как понять?

представление выводит информацию, пришедшую из контроллера, который в свою очередь, получил её от модели.

тут же вид никак не связан с контроллером
1
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
12.03.2014, 18:46
А как можно избавиться от такого в виде?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$var1 = template::getData('var1');
$keys = array_keys($var1);
$var2 = template::getData('var2');
 
foreach ($var1 as $var) {
    echo "...
        ........
    ";
    
    foreach ($keys as $key) {
        if ($var1[$key]['bla-bla-bla'] != $var['bla-bla-bla']) continue;
        echo "
                 ........
                 .......
        ";
    }
    
    echo ........';
}
?>
0
16 / 16 / 6
Регистрация: 14.11.2013
Сообщений: 86
14.03.2014, 01:57


Кликните здесь для просмотра всего текста
Модель — содержит бизнес-логику приложения и включает методы выборки (это могут быть методы ORM), обработки (например, правила валидации) и предоставления конкретных данных, что зачастую делает ее очень толстой, что вполне нормально.
Модель не должна напрямую взаимодействовать с пользователем. Все переменные, относящиеся к запросу пользователя должны обрабатываться в контроллере.
Модель не должна генерировать HTML или другой код отображения, который может изменяться в зависимости от нужд пользователя. Такой код должен обрабатываться в видах.
Одна и та же модель, например: модель аутентификации пользователей может использоваться как в пользовательской, так и в административной части приложения. В таком случае можно вынести общий код в отдельный класс и наследоваться от него, определяя в наследниках специфичные для подприложений методы.


Вид — используется для задания внешнего отображения данных, полученных из контроллера и модели.
Виды cодержат HTML-разметку и небольшие вставки PHP-кода для обхода, форматирования и отображения данных.
Не должны напрямую обращаться к базе данных. Этим должны заниматься модели.
Не должны работать с данными, полученными из запроса пользователя. Эту задачу должен выполнять контроллер.
Может напрямую обращаться к свойствам и методам контроллера или моделей, для получения готовых к выводу данных.
Виды обычно разделяют на общий шаблон, содержащий разметку, общую для всех страниц (например, шапку и подвал) и части шаблона, которые используют для отображения данных выводимых из модели или отображения форм ввода данных.


Контроллер — связующее звено, соединяющее модели, виды и другие компоненты в рабочее приложение. Контроллер отвечает за обработку запросов пользователя. Контроллер не должен содержать SQL-запросов. Их лучше держать в моделях. Контроллер не должен содержать HTML и другой разметки. Её стоит выносить в виды.
В хорошо спроектированном MVC-приложении контроллеры обычно очень тонкие и содержат только несколько десятков строк кода. Чего, не скажешь о Stupid Fat Controllers (SFC) в CMS Joomla. Логика контроллера довольно типична и большая ее часть выносится в базовые классы.
Модели, наоборот, очень толстые и содержат большую часть кода, связанную с обработкой данных, т.к. структура данных и бизнес-логика, содержащаяся в них, обычно довольно специфична для конкретного приложения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2014, 01:57
Помогаю со студенческими работами здесь

Проверить Блок-схему
Одноклеточная амёба каждые три часа делится на 2 клетки. Составьте алгоритм вычисления времени, через которое будет X амёб. ...

Проверить Блок-схему
Добрый вечер Форумчане. Есть программа на С, блок-схема нарисована, но не уверен в её правильности. Подкорректируйте, кто хорошо...

прошу схему проверить
Уважаемые товарищи! Есть некая схема для управления насосом: http://www.joyta.ru/593-sxema-uprovteni ... m-nasosom/ У меня накачивает в...

Проверить блок-схему
Правильная ли блок-схема к программе? И что в нём (блок-схеме) не хватает? Program massiv; Uses crt; const n=25; var z:array of...

Проверить схему в workbench
Для данный схемы были определены токи методом узловых потенциалов и контурных токов. Токи сошлись. Баланс мощностей сошелся При проверке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru