Поправьте,если ошибаюсь:модель содержит данные,описание и реализацию методов (например,как сформировать запрос к БД).Это бизнес-логика. А контроллеры лишь выполняют реализацию этих методов (например,приняли запрос от юзера,выполнили запрос к БД,отдали данные в представление).Ну и как это работает в моем понимании,попробую привести пример на пальцах. Есть завод (представление).Есть начальник (юзер).Есть слесарь (контроллер).И есть пара книг (модели). Начальник смотрит на завод и говорит слесарю (юзер посылает запрос контроллеру):"Слушай,вон та труба явно лишняя,срежь ее и я не знаю,как ты это сделаешь".Слесарь чешет репу и думает:"Как же поступить?"Читает первую книгу (первая модель) -там описана суть работы с газовым сварочным аппаратом и какие приблуды для этого нужны.Читает вторую (вторая модель)-там уже идет описание работы с болгаркой. В итоге решается срезать сваркой (использует бизнес-логику первой модели) и срезает (формирует представление).Затем идет к начальнику и хвалится проделанной работой (отдаёт представление юзеру). То есть в моделе "Тонкий контроллер-толстая модель" все,скажем так,знания,сосредоточены в моделе,а контроллер лишь выполняет какие-то действия,не вникая в смысл реализации этих действий. Так же в парадигме MVC сказано,что модель независима,а вот контроллеры и представления зависят от нее.То есть, если потерять первую книгу (убрать первую модель),то слесарю прийдется выёживаться с болгаркой (слесарь зависит от книги (бизнес-логики модели)) и работа будет выполнена явно коряво (будет другое представление).То есть здесь прямая зависимость.А вот если уволить старого слесаря и на его место поставить такого же,равного по скиллу,то ничего и не изменится. P.S Штудирую YII.
бизнес-логика - это термин с потолка для большей солидности. Что делать, если вдруг логика не бизнес? слесарь это конечно интересно, но по факту, контроллер просто выбирает нужную точку входа в приложение. Таким контроллером может служить даже веб-сервер. Это очень сильно сказано, учитывая что без любой другой буквы из MVC парадигма MVC не существует.
Пусть будет просто логика без бизнес,не суть.Хотя бы в общих чертах я всё правильно понимаю,исходя из моего поста?
у тебя есть кнопка, при нажатии на нее начинает работать какой то большой механизм, так вот кнопка это контроллер, а механизм это модель, ясны?
Научитесь ставить пробелы, хотя бы. Читать это слипшееся жутко. К слову, много аналогий - тоже вредно, старайтесь понимать тему не переводя все 1 в 1 в реальны мир. Модель - это ваша некая сущность, которой вы хотите оперировать в коде. Человек, инструмент, комната. Что выбрать моделью - зависит от конкретной задачи - рассматриваем ее и выделяем необходимые нам сущности. Возможно, нам не нужен "человек" и "инструмент", а нам нужен просто "рабочий". Это проектирование часто аналогично проектированию базы данных, но может и не совпадать. В мире Yii и паттерна ActiveRecord - таблица и модель совпадают. К слову - сохранение в баз, получение данных из базы и прочее - вообще к модели отношения не имеет, этим должны заниматься иные сущности. Опять же, в случае ActiveRecord - модель и хранилище данных жестко взаимосвязаны. Но это не аксиома, скорее - нарушение. Определив модели - определяем, какие данные она содержит. Бизнес-логика - это не логика "бизнеса" и вообще к палатке с шаурмой отношения не имеет. Бизнес-логика - это набор правил и поведения данных в модели. Т.е. все ограничения на данные, на их получение, проверки - можно какие-то данные изменить или нет, можно ли что-то сделать с объектом модели или нет и т.п. Логика конечно есть не только бизнес. Есть логика отображения, есть логика инфраструктуры (то самое сохранение в базу) и т.п. Так вот ТУК - это когда в контроллере смешалось все. И бизнес-логика, которая должна быть в модели, и где-то инфраструктурная логика. Вот, кстати, что стоит посмотреть https://en.wikipedia.org/wiki/Multilayered_architecture Но в общем, если резюмировать кратко, не пытайтесь объять все сразу и сделать все правильно сразу - не получится. В общих чертах идею положили, по мере развития туда будет наслаиваться всякая дополнительная информация и менять ваш стиль.