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

21 Авг 2019 в 07:00
207 +1
1
Ответы
1

Вообще, хорошая практика - это разделение ответственностей. То есть каждый класс должен отвечать за определенную часть логики.

В вашем случае, вы правильно предположили, что лучше создать отдельный класс для добавления постов. Этот класс может содержать логику валидации данных, создание объекта Post и передачу его в модель для сохранения.

Примерно так это может выглядеть:

class PostsAdd {
private $data;
public function __construct($data) {
$this->data = $data;
}
public function validate() {
// здесь проверяем входящие данные, например, наличие всех необходимых полей и их правильность
// если данные не прошли валидацию, выкидываем исключение
}
public function createPost() {
// здесь создаем объект Post, используя данные из $this->data
$post = new Post($this->data);
return $post;
}
}
$add_post = new PostsAdd($_GET);
$add_post->validate();
$post = $add_post->createPost();
$ModelPosts = new ModelPosts;
$ModelPosts->save($post);

Таким образом, в классе PostsAdd содержится вся логика добавления постов, включая валидацию данных и создание объекта Post. Это позволит вам лучше структурировать код и легче поддерживать его в будущем.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир