Преобразует ли datamapper результат SGBD в объект?
Я работаю с MySQL, и результаты/строки возвращаются в массиве.
Я понимаю, что, в конце концов, "цель" уровня модели состоит в том, чтобы вернуть объект после обработки запроса SGBD.
Итак, должен ли процесс преобразования строк (или одной строки) в объект быть интегрирован в DataMapper (который является частью слоя модели) или за это должна отвечать третья служба, которая будет внедрена в DataMapper?
Спасибо
3 answers
Итак, должен ли процесс преобразования строк (или одной строки) в объект быть интегрирован в DataMapper.
Ну да, это ответственность картографа данных. Он должен возвращать сущность, а не результирующий набор.
Или это должна быть ответственность третьей службы, которая будет введена в DataMapper?
Это также возможно, Google для "UnitOfWork", я думаю, это то, что вы ищете. https://www.sitepoint.com/implementing-a-unit-of-work/
Вы также можете взглянуть на источник доктрины https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/EntityManager.php
Да, я согласен с Сандером, ваша бизнес-логика должна быть на другом уровне. Но это не должно быть в контроллере.
Классический MVC сжатый из 3-х частей:
А модель хранит данные, которые извлекаются в соответствии с командами контроллера и отображаются в представлении.
А посмотреть генерирует новые выходные данные для пользователя на основе изменений в модели.
A контроллер может отправлять модели команды для обновления состояния модели (например, для редактирования документа). Он также может отправлять команды в связанное с ним представление для изменения представления модели в представлении (например, прокрутка документа).
Любые части в MVC - это независимый шаблон.
Существуют активные и пассивные MVC. Классический MVC активен.
В активной модели, состоящей из трех компонентов, модель находится в действие. Основное отличие от реализации Пассивной модели заключается в том, что в реализации активной модели Модель уведомляет Представление, когда Модель изменяется Контроллером. Наглядное представление прояснит это больше.
В активной бизнес-модели логика заложена в модели, а контроллер тонкий.
Вы можете разделить DataMapper и добавить новую службу для преобразования ваших данных, возврата данных в модель и возврата данных контроллеру
Лучше вернуть объект из модели в контроллер, потому что всякий раз, когда вам нужен результат или строка, вы можете просмотреть каждый из них.