Read models naming

Проверенные VDS на SSD в Европе от $4 и России: Датацентр №1 от 199руб

Тема в разделе "Вопросы по теории программирования", создана пользователем Adelf, 31 окт 2017.

  1. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    6.739
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    у вас разные контексты в разных пространствах имен?
     
  2. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    6.739
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    объект для передачи между слоями - это определение DTO
     
  3. Вурдалак

    Вурдалак Newbie

    Сообщения:
    6.025
    Ваш город:
    Russia, Moscow
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    А я не про BC.
    Они в разных слоях, обе модели друг про друга ничего не знают, и семантически и технически у них разные задачи. Даже слово «модель» к ним применима в разных смыслах.
    В противном случае в API ты отдаёшь не «продукт», а «карточку продукта».
    Когда удивлённый пользователь API спросит почему именно «карточка», то ты ему расскажешь, что это конфликтует с именем domain model.
    Да и domain model со временем переименуешь, ведь на самом деле продукт на полках, а это — «КомпьютернаяМодельПродукта».
     
  4. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.446
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Да, можно сказать, что Read Model - это частный случай DTO. А в чем проблема с этим?
     
  5. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    5.924
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    если на секунду вспомнить о graphql, то думается, что в php read-model должна быть основана на базе ассоциативного массива (к тому что клиент просил только определенный набор атрибутов). хотя возможно массив это конечное представление.
     
  6. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.446
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Если бы в php можно было их типизировать, как в typescript, и если бы в php были generic-и... А без этого слишком это все хрупко.
     
  7. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    5.924
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    я так понимаю, что в этом случае (graphql) результирующая модель обрабатывается клиентом и от того что в пхп были бы generic-и или была бы возможность массивы типизировать, клиенту легче не становится.
    задача только добыть и связать данные, все для связки (момент вычислений) по идеи и так храниться где-то в обьектах типа relation, а остальное как есть так и отдавать нужно. максимум что надо сделать, это проверить на разрешение запрошенные аттрибуты считывать.
     
  8. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.446
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    А при чем тут клиент? Может, у меня тупой клиент, и все рендерится на сервере. Какое это отношение имеет к read model?
     
  9. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    5.924
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    тупой клиент врятли на graphql общаться будет.
    но если в твиг забабахать метод "graphql"
    PHP:
    {% set user graphql('{me{name}}') %}
    <
    h1>{{user.name}}</h1>
    то все опять на своем месте

    ну я так понимаю что graphql('{me{name}}') должно возвращать "read model"
     
  10. Юрий Быков

    Юрий Быков Новичок

    Сообщения:
    37
    Ваш город:
    Ulyanovsk, Russia
    Address:
    Ulyanovsk, Russia
    Country:
    Location on Map:
    Расскажите как будете использовать read-модель. Она действительна нужна в проекте? Может имеет смысл выдавать некий массив из обычной модели или сразу из БД формировать массив и отдавать на клиент.
     
  11. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.098
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Это и будет read model…
     
  12. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.446
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Если бы в PHP можно было описать интерфейс ассоциативного массива, как это делается в Typescript для plain JS objects - можно было бы и так, в Typescript я именно так и делаю. Вроде, в Hack что-то похожее есть (хотя, может, я путаю).

    А сидеть ручками писать $model['foo'] и глазами, без какой-либо помощи IDE, высматривать опечатки - спасибо, нет.
     
  13. Юрий Быков

    Юрий Быков Новичок

    Сообщения:
    37
    Ваш город:
    Ulyanovsk, Russia
    Address:
    Ulyanovsk, Russia
    Country:
    Location on Map:
    Согласен, PHP в этом плане пока туп. Очень не хватает структур и иммутабельности. Велком ФП.
     
  14. Юрий Быков

    Юрий Быков Новичок

    Сообщения:
    37
    Ваш город:
    Ulyanovsk, Russia
    Address:
    Ulyanovsk, Russia
    Country:
    Location on Map:
    В моём понимании модель это объект, а не массив, поэтому это не одно и тоже.
     
  15. Adelf

    Adelf Laravel&PhpStorm Команда форума

    Сообщения:
    3.124
    Ваш город:
    Казань
    Address:
    Kazan, Russia
    Country:
    Location on Map:
    Статической типизации не хватает. Но это будет уже не php.

    Написать как-то еще можно. Главная проблема, что потом не получится быстро рефакторить. нельзя Find usages эффективно юзать. А в случае ключа массива вообще невозможно :)
     
    fixxxer нравится это.
  16. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.446
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Больше всего, на самом деле, не хватает дженериков. Классом или интерфейсом изображать старый добрый struct - это, в общем-то, один фиг. А вот вместо Collection<T> приходится всякую фигню городить.
     
  17. Юрий Быков

    Юрий Быков Новичок

    Сообщения:
    37
    Ваш город:
    Ulyanovsk, Russia
    Address:
    Ulyanovsk, Russia
    Country:
    Location on Map:
    Их хотят добавить в будущих версиях. В хаке уже есть.
     
  18. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.446
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Да ничего там не хотят. RFC написал чувак, который вообще исходники PHP не открывал. Это очень масштабное изменение для PHP, затрагивающее весь zend engine, причем тут еще и надо учесть динамическую природу PHP со всеми его get_class и прочими new $className, которые должны как-то продолжать работать.
     
  19. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.098
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Принцип "есть два мнения - моё и неправильное" здесь не работает.
     
  20. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    5.924
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    без обьекта не обойтись, на массиве (тем более усеченном) невозможно будет проиграть события.