Должен ли я обмениваться правыми моделями в качестве параметров? (используя RedBean ORM)

Я только начинаю экспериментировать с фреймворком Slim и RedBean ORM в PHP.

Допустим, у меня есть CommentService зарегистрирован в контейнере для инъекций зависимостей Slim. Кроме того, у меня есть модель данных с именем Comment_Model который используется RedBean для представления комментариев, хранящихся в базе данных.

Теперь из моего маршрута / контроллера я хочу добавить новый комментарий в базу данных. Это то, где я немного запутался — каков наилучший способ передачи информации от маршрута / контроллера в сервисный метод?

Я могу придумать как минимум три разных способа сделать это;

1 — использовать экземпляр Comment_Model предоставить данные:

class CommentService {

public function add(\App\Data\Model\Model_Comment $comment){
// Let the ORM persist the data
}

}

Это похоже на злоупотребление классом сущности модели данных — разве это не предназначено для создания экземпляра ORM, а не как удобная функция для передачи новых, неискаженных данных?

2 — Отдельные параметры

class CommentService {

public function add($userId, $message, $replyToId){
// Let the ORM create a proper data model and persist the data
}

}

Он работает, когда есть только три параметра, но для чего-то более сложного, чем комментарий, он может легко выйти из-под контроля …

3 — Создать объект передачи данных

class CommentDTO{
public $userId;
public $message;
public $replyToId;
}class CommentService {

public function add(\App\Data\DTO\CommentDTO $comment){
// Let the ORM create a proper data model and persist the data
}

}

Не слишком ли сложно создавать DTO для локального использования?

Есть ли здесь какие-то жесткие права и недостатки? Каков «нормальный» способ сделать такие вещи?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]