@Alk90
php, mysql, jquery, css, html, api

Как обрабатывать добавление поста в классах?

Всем привет! Подскажите, как (скорее всего "ГДЕ"), лучше обрабатывать входящие данные при добавлении поста?
Например:
Есть модель ModelPosts, в которой мы получаем все из базы данных.
Есть объект Post, в котором обычно помещаются данные о посте, после их получения из БД (но у себя в голове никак не могу его определить куда-то при добавлении поста, получается этот объект никак не участвует в добавлении)
Я правильно понимаю, что лучше всего создать отдельных класс, скажем "PostsAdd", куда будем отправлять массив $_GET например так:
$add_post = new PostsAdd($_GET);
$add_post->validate(); // проверяем все входящие данные (и выкидываем исключение, если, скажем нет какого-то поля или оно заполнено неверно).

$ModelPosts = new ModelPosts;
$ModelPosts->save($add_post); // передаем в модель, экземпляр класса, а модель вытаскивает все, что нужно из него и сохраняет.
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ответы на вопрос 3
qonand
@qonand
Software Engineer
ох Вы с названиями и ответственностью классов намудрили, давайте по порядку
Есть модель ModelPosts, в которой мы получаем все из базы данных.

Это не модель. Модель - это набор классов реализовывающих бизнес-логику. У Вас же этот класс реализовывает взаимодействие с базой данных - а это как бы вообще не бизнес-логика. По сути дела класс ModelPosts у Вас выступает в качестве репозитория, который только обеспечивает взаимодействие с базой данных. Репозиторий - это уровень доступа к данным.

Есть объект Post, в котором обычно помещаются данные о посте, после их получения из БД (но у себя в голове никак не могу его определить куда-то при добавлении поста, получается этот объект никак не участвует в добавлении)

А этот класс по сути дела обычная сущность хранящая в себе данные. Вот этот то класс и должен быть моделью (или ее частью) т.е. не только содержать данные но и реализовывать какую-нибудь бизнес-логику. Модель это уровень бизнес-логики.

Добавление поста - это что? в общем случае это просто выполнение определенного запроса к базе данных. А что отвечает за взаимодействие с базой данных? Уровень доступа к данным, в нашем случае это класс ModelPosts (вообще-то не удачное название). Соответственно в нем и должна быть реализация добавления поста в базу данных.

Что касается валидации - реализация механизма валидации должна содержаться в отдельном классе (или классах). Сама валидация может происходить либо в контроллере, либо в модели
Ответ написан
Комментировать
@morricone85
Нет. Для добавления нового поста создайте метод, например, add в модели ModelPosts.
Ответ написан
PravdorubMSK
@PravdorubMSK
Подскажите, как (скорее всего "ГДЕ"), лучше обрабатывать входящие данные при добавлении поста?
в контроллере
Я правильно понимаю, что лучше всего создать отдельных класс, скажем "PostsAdd", куда будем отправлять массив $_GET например так:
нет. если своими мозгами дойти не можете, покопайте фреймворки

Сергей в комментах написал как надо делать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы