[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: mvc - не cmv
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
Игорь_Vasinsky
Вообщем я для себя давненько уже выбрал архитектуру при которой логика отделяется от вывода

в моём понимании это выглядило так

index.php - точка входа, роутер

для каждого пути (если разные задачи) роутера свой контроллер и модель

т.е.

index.php

//кодировка
//инклуд файла конфига
//роутер на switch который подключает нужную модель

модель
//подключает нужный контроллер
//подключает нужный шаблон
//если нужно проводит операции относящиеся к шаблону относительно данных из контроллера (например микро шаблонизатор с strtr())

контроллер
//обработка данных от юзера
//работа с бд
//подготовка данных в удобном виде для дальнейшей отдачи их в шаблон (или в микрошаблонизатор)

шаблон - он и антарктике шаблон. tpl файл с html вёрсткой в который альтернативным синтаксисом напичкиваются данные из контроллера (или модели)


здаётся мне - что в моей схеме - модель халтурит, т.е. я её не правильно использую.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
+ я постоянно натыкаюсь на классы наследованные от базового контроллера.

в чём суть этого контроллера?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
waldicom
Цитата (Игорь_Vasinsky @ 6.03.2013 - 21:44)
здаётся мне - что в моей схеме - модель халтурит, т.е. я её не правильно использую.

Есть правильное выражение - fat model, skinny controller. Вот по нему и строй приложение.

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Invis1ble
в СМСках I++ правильно тебе написал
Цитата
контроллер объеденяет всебе модель и представление. Модель нефига не знает о представлении, она лишь умеет оперировать данными и другими структурами. К примеру мы хотим получить список юзеров, в моделе мы описываем способы получения, сортировки, кого выводить кого нет, в контроллере мы получаем данные из модели и выбираем представление для этих данных и отдаем юзеру, в представлении собственно и описывается как выводить список этих юзеров, с красной каемочкой или с зеленой.
Игорь_Vasinsky
waldicom
мы тут паралельно в смс ещё.
эти понятия мне неизвестны, мне на данный момент важна суть архитектуры - самой простой mvc

я там ответил:
Цитата
вот в чём дело. т.е. по сути так и называется - модель - т.е. модель данных - которую потом обработает контроллер и выдаст в шаблон - так? получается - все выборки из бд - модель, подготовка этой выборки для вывода - контроллер (+ обработка данных от юзера до работы модели с БД) ????
Внимание


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
Цитата
I++ >> В контроллере по сути не должно быть грубой обработки данных, для этого нужно сделать модель, которая будет фильтровать данные, контроллер лишь оперирует моделями и представлениями. Проверяет авторизацию юзера например, через модель проверки авторизации юзера.


опять тупичёк.


модель работает с БД и обрабатывает данные.
контроллер получает эти данные - приводит их в удобный вид (например ассоциативный массив) - и отдаёт в шаблон? так чтоли?

а почему не

контроллер получил данные, отфильтровал, проверил и отдал в модель которая с этими данными сделала выборку из бд и вернула в контроллер результат.

контроллер эти данный упаковал в ассоциативный массив (к примеру), или обнаружил что данных нет - и отдал это всё в шаблон.

??

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
или как раз поэтому класс модели наследуется от класса базового контроллера?

т.е. фильтрация будет проходить в модели - но работать буду методы базового контроллера?

я ещё суть наследования от базового контроллера паралельно понять хочу.

опять же - логика говорит обратное

модель должна сказать контроллеру как проверить данные.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Invis1ble
Цитата
класс модели наследуется от класса базового контроллера?
Игорь_Vasinsky
я постоянно встречаю в CMSках

class Model extends Controller{
//бла-бла
}


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
I++
Цитата (Игорь_Vasinsky @ 7.03.2013 - 01:04)
Цитата
I++ >> В контроллере по сути не должно быть грубой обработки данных, для этого нужно сделать модель, которая будет фильтровать данные, контроллер лишь оперирует моделями и представлениями. Проверяет авторизацию юзера например, через модель проверки авторизации юзера.


опять тупичёк.


модель работает с БД и обрабатывает данные.
контроллер получает эти данные - приводит их в удобный вид (например ассоциативный массив) - и отдаёт в шаблон? так чтоли?

а почему не

контроллер получил данные, отфильтровал, проверил и отдал в модель которая с этими данными сделала выборку из бд и вернула в контроллер результат.

контроллер эти данный упаковал в ассоциативный массив (к примеру), или обнаружил что данных нет - и отдал это всё в шаблон.

??

Цитата
контроллер получил данные, отфильтровал, проверил и отдал в модель


Почти так только контроллер -> модель фильтра -> модель которая работает с данными.

Вот пример из жизни:

Игорь большой начальник, пришел к нему Дмитрий и говорит: Я принес ящик помидор, Игорь же начальник он отдает Пете и говорит: я не верю, что это помидоры, Петя проверяет, затем Петя возвращается и говорит: Игорь, это помидоры, тогда уже Игорь говорит Васе: Вася иди помидора расфасуй на склад и принеси ящик 2х2 метра с орехами, Вася приносит ящик 2х2 метра с орехами и игорь отдает орехи Коле, который насыпает орехи в красивые упаковки с бантиками и светодиодной музыкой, Игорь отдает Дмитрию его орешки smile.gif
Игорь_Vasinsky
а почему Игорь говорит Васе - что ящик должен быть 2х2 ?
разве Вася не должен спросить у Пети какой ящик нужен?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Invis1ble
Цитата (Игорь_Vasinsky @ 6.03.2013 - 23:12)
я постоянно встречаю в CMSках

class Model extends Controller{
  //бла-бла
}

а я постоянно встречаю в интернетах, что CMS'ки в подавляющем большинстве - говнокод ;)

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Игорь_Vasinsky
ну по сути получается что модель расширяет возможности базового контроллера.

это плохо?

и сразу след. вопрос.

что вообще делает базовый контроллер? ест-но достаточно абстракцию

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
I++
Да немного неправильно написал, тут получается как Вася получает ящик помидор и уже у себя узнает, что он должен быть 2х2 метра. smile.gif

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

Вася лишь должен знать, что это ящик и что в нем есть помидоры. А вдруг в будущем еще один Вася будет? Если каждый Вася будет сам думать помидоры там или бананы, будет не очень эффективно, потому что есть Петя который специалист по фруктам и овощам.
Invis1ble
Игорь_Vasinsky
ты говоришь о сферическом коде в вакууме, контроллером можно назвать
// базовый контроллер, lol
class Controller {
public function __construct() {
echo 'hello world';
}
}

но это не значит, что это контроллер.
Вообще, каждый может обозвать свой код как хочет.
Вон например в Symfony, который я считаю чуть ли не образчиком фреймворков, был такой себе фронт-контроллер (в 1-й версии по крайней мере), который являлся ни чем иным, как точкой входа типа index.php

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.