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