<rmcreative>

RSS

Рецепты для Yii 2

23 октября 2016

Доклад от члена команды Yii, Дмитрия Науменко.

Слайды

Комментарии RSS

  1. №10713
    JiLiZART
    JiLiZART 23.10.2016, 23:11:40

    Жуткий звук просто

  2. №10714
    w3lifer
    w3lifer 24.10.2016, 0:15:17

    Вот теперь стало ясно, а то я никак не мог уловить зачем пихать бизнес-логику в модель, но всё равно туда её пихал, типа в MVC так нужно :D

  3. №10717
    VitaliyL
    VitaliyL 25.10.2016, 9:33:27

    Аналогичная презентация от Дмитрия была в Одессе, но звук там лучше - www.youtube.com/watch?v=WL0-bd2Afho

    У него, кстати, есть еще интересные презентации - slides.silverfire.me

  4. №10718
    Sam
    Sam 25.10.2016, 11:54:22

    VitaliyL, там совсем другая презентация.

  5. №10720
    Pepe
    Pepe 26.10.2016, 15:35:16

    Sam Дима вначале сам сказал, что в Одессе уже читал этот доклад

  6. №10721
    Sam
    Sam 26.10.2016, 23:26:53

    Да, но по факту доклад отличается.

  7. №10722
    XAKEPEHOK
    XAKEPEHOK 27.10.2016, 17:43:47

    Немного не понял, почему плохо в контроллерах писать голый SQL? Если это например статистика, то почему нет?

  8. №10723
    Sam
    Sam 29.10.2016, 17:49:29

    XAKEPEHOK, потому что это не задача контроллера. Его дело — принять данные и передать view или модели, забрать результат и отдать далее.

  9. №10724
    XAKEPEHOK
    XAKEPEHOK 30.10.2016, 20:04:52

    Sam, все равно не пойму. Если у меня есть вывод какой-то сложной статистики, состоящей из скажем 5 разных запросов, которые с использованием AR делать бесполезно, т.к. они используют фитчи, специфичные для конкретной СУБД. Эта статистика 100% нигде в другом месте юзаться не будет. Для чего в таком случае делать отдельные сущности? Ради абстракции в случае скажем смены движка БД? Тоже сомнительно в виду того, что весь код хоть как будет лежать в одном месте

  10. №10725
    Sam
    Sam 30.10.2016, 20:32:24
    • Чтобы не раздувать контроллер.
    • Чтобы была возможность оттестировать это.
    • Мы никогда не можем утверждать на 100%, что это юзаться где-то ещё не будет.

    Но если мы не тестируем и 99% не будем ничего менять, оно, по факту, может оставаться и в контроллере.

  11. №10726
    XAKEPEHOK
    XAKEPEHOK 30.10.2016, 20:34:02

    Понял. Про тесты не подумал (только начинаю их юзать). Спасибо!

  12. №10727
    nikosid
    nikosid 31.10.2016, 18:56:19

    Да, но по факту доклад отличается.

    Sam, я не понимаю в чём отличается, посмотрел с плохим звуком, теперь открыл одесскую версию и вижу всё тоже самое. Что эе отличается?

  13. №10728
    Sam
    Sam 01.11.2016, 13:09:23

    Конец.

  14. №10730
    darlov
    darlov 02.11.2016, 8:25:01

    Спасибо за доклад, все четко. Побольше бы таких докладов.

    Задам возможно глупый вопрос. А есть ли стандартное название или положение директорий для классов бизнес логики или это уже на усмотрение программистов, я просто создаю в корне модуля папку classes и туда все складываю, но есть сомнения, что это не особо правильно и возможно для этого есть специальные места, но в доке я не нашел. Спасибо.

  15. №10731
    Дмитрий Науменко
    Дмитрий Науменко 02.11.2016, 9:34:18

    А есть ли стандартное название или положение директорий для классов бизнес логики или это уже на усмотрение программистов

    На усмотрение. Среди полюбившихся мне: logic, domain (от DDD)

    Sam, я не понимаю в чём отличается, посмотрел с плохим звуком, теперь открыл одесскую версию и вижу всё тоже самое. Что эе отличается?

    Да, отличается в первую очередь развернутостью. Харьковский я читал после того, как еще раз переосмыслил некоторые вещи.

    Спасибо за отзывы

  16. №10732
    Дмитрий Науменко
    Дмитрий Науменко 02.11.2016, 9:36:38

    Звук вообще писался с петлички, которая была на мне. Почему на видео взяли звук с камеры - понятия не имею. Неделю назад купил себе хорошую петличку и в будущем буду сам записывать звук, чтобы не было таких провтыков

  17. №10741
    Артур
    Артур 06.11.2016, 5:41:34

    Дмитрий Спасибо! Вы меня чутка левелапнули... доменный подход понравился, сейчас я только модели наследовал для конкретной логики.

    Я сейчас делаю минимум 1 наследование.. сейчас схема такая:

    1. Уровень автогенерации модели в директории /model/activeRecords - только то что автогенерируется через gii, ручками не трогаем

    2. Базовый уровень логики /model/activeModels - либо вся бизнес логика, либо только общая

    3. /model/activeModels/currentLogicName - некая конкретная логика, если надо еще правил валидации накидать для какого-то данного случая, в случае если модель разраслась и требуется раскидать её на разные части.

    После доклада видимо добавлю такую штукенцию

    /model/ddd/(logic name)/(sublogic name)/(...)

  18. №10745
    kosuha606
    kosuha606 11.11.2016, 9:08:45

    XAKEPEHOK,

    Для чего в таком случае делать отдельные сущности?

    Читал как-то одну интересную книжку по ООП, в которой было написано о том, что MVC является составным паттерном и состоит он из двух паттернов: Наблюдатель и Стратегия.. Взаимоотношения между Контроллером - Моделью и Контроллером - Видом должны реализовать паттерн стратегия...

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

    Взаимоотношения между моделью и видом это паттерн наблюдатель... Это значит что Модель должна оповещать вид об изменении своего состояния напрямую.. без контроллера...

    Если эти условия не выполняются , возможно, что Вы реализовали не MVC, а что - то другое.

  19. №10746
    Sam
    Sam 11.11.2016, 16:56:25

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

  20. №10747
    kosuha606
    kosuha606 11.11.2016, 17:21:35

    sam,

    Да конечно там было все на Java и с взаимоотношениями между видом и моделью я загнул.. просто сказал как это есть в Java, но речь же о контроллерах...

    Мне кажется, что Контроллер должен реализовать паттерн Стратегия и в Веб тоже.. может я и не прав.

  21. №10750
    Sam
    Sam 12.11.2016, 14:04:12

    MVC в вебе отличается. Если уж мы говорим про Java, то это у нас будет Model 2.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.