За последние 24 часа нас посетили 19312 программистов и 1615 роботов. Сейчас ищет 1001 программист ...

YII,ТТУК,MVC,бизнес-логика

Тема в разделе "PHP для новичков", создана пользователем kakadyi, 17 сен 2015.

  1. kakadyi

    kakadyi Новичок

    С нами с:
    9 сен 2015
    Сообщения:
    25
    Симпатии:
    0
    Поправьте,если ошибаюсь:модель содержит данные,описание и реализацию методов (например,как сформировать запрос к БД).Это бизнес-логика. А контроллеры лишь выполняют реализацию этих методов (например,приняли запрос от юзера,выполнили запрос к БД,отдали данные в представление).Ну и как это работает в моем понимании,попробую привести пример на пальцах. Есть завод (представление).Есть начальник (юзер).Есть слесарь (контроллер).И есть пара книг (модели). Начальник смотрит на завод и говорит слесарю (юзер посылает запрос контроллеру):"Слушай,вон та труба явно лишняя,срежь ее и я не знаю,как ты это сделаешь".Слесарь чешет репу и думает:"Как же поступить?"Читает первую книгу (первая модель) -там описана суть работы с газовым сварочным аппаратом и какие приблуды для этого нужны.Читает вторую (вторая модель)-там уже идет описание работы с болгаркой. В итоге решается срезать сваркой (использует бизнес-логику первой модели) и срезает (формирует представление).Затем идет к начальнику и хвалится проделанной работой (отдаёт представление юзеру).
    То есть в моделе "Тонкий контроллер-толстая модель" все,скажем так,знания,сосредоточены в моделе,а контроллер лишь выполняет какие-то действия,не вникая в смысл реализации этих действий.
    Так же в парадигме MVC сказано,что модель независима,а вот контроллеры и представления зависят от нее.То есть, если потерять первую книгу (убрать первую модель),то слесарю прийдется выёживаться с болгаркой (слесарь зависит от книги (бизнес-логики модели)) и работа будет выполнена явно коряво (будет другое представление).То есть здесь прямая зависимость.А вот если уволить старого слесаря и на его место поставить такого же,равного по скиллу,то ничего и не изменится.
    P.S Штудирую YII.
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    бизнес-логика - это термин с потолка для большей солидности. Что делать, если вдруг логика не бизнес?

    слесарь это конечно интересно, но по факту, контроллер просто выбирает нужную точку входа в приложение. Таким контроллером может служить даже веб-сервер.

    Это очень сильно сказано, учитывая что без любой другой буквы из MVC парадигма MVC не существует.
     
  3. kakadyi

    kakadyi Новичок

    С нами с:
    9 сен 2015
    Сообщения:
    25
    Симпатии:
    0
    Пусть будет просто логика без бизнес,не суть.Хотя бы в общих чертах я всё правильно понимаю,исходя из моего поста?
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    у тебя есть кнопка, при нажатии на нее начинает работать какой то большой механизм, так вот кнопка это контроллер, а механизм это модель, ясны?
     
  5. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Научитесь ставить пробелы, хотя бы. Читать это слипшееся жутко. К слову, много аналогий - тоже вредно, старайтесь понимать тему не переводя все 1 в 1 в реальны мир.

    Модель - это ваша некая сущность, которой вы хотите оперировать в коде. Человек, инструмент, комната. Что выбрать моделью - зависит от конкретной задачи - рассматриваем ее и выделяем необходимые нам сущности. Возможно, нам не нужен "человек" и "инструмент", а нам нужен просто "рабочий". Это проектирование часто аналогично проектированию базы данных, но может и не совпадать. В мире Yii и паттерна ActiveRecord - таблица и модель совпадают.

    К слову - сохранение в баз, получение данных из базы и прочее - вообще к модели отношения не имеет, этим должны заниматься иные сущности. Опять же, в случае ActiveRecord - модель и хранилище данных жестко взаимосвязаны. Но это не аксиома, скорее - нарушение.

    Определив модели - определяем, какие данные она содержит. Бизнес-логика - это не логика "бизнеса" и вообще к палатке с шаурмой отношения не имеет. Бизнес-логика - это набор правил и поведения данных в модели. Т.е. все ограничения на данные, на их получение, проверки - можно какие-то данные изменить или нет, можно ли что-то сделать с объектом модели или нет и т.п.

    Логика конечно есть не только бизнес. Есть логика отображения, есть логика инфраструктуры (то самое сохранение в базу) и т.п.

    Так вот ТУК - это когда в контроллере смешалось все. И бизнес-логика, которая должна быть в модели, и где-то инфраструктурная логика. Вот, кстати, что стоит посмотреть https://en.wikipedia.org/wiki/Multilayered_architecture

    Но в общем, если резюмировать кратко, не пытайтесь объять все сразу и сделать все правильно сразу - не получится. В общих чертах идею положили, по мере развития туда будет наслаиваться всякая дополнительная информация и менять ваш стиль.