• Изучаю ООП, как лучше обрабатывать форму?

    Lopar
    @Lopar
    системный администратор
    Это тоже не до конца ООП, но вам бы стоило пробовать двигаться от вашего кода в сторону соблюдения условий: "одна функция - одно действие" и "повторное использование".

    Посмотрите, я переписал.
    <?php
    
    class SomeClass
    {
        private string $title = '';
        private string $content = '';
        private array $error = [];
    
        public function create(): void
        {
            if (empty($this->error)) {
                $this->add();
            }
            echo $this->getStatus();
        }
    
        private function add(): void
        {
            $query = "insert into posts set title = :title, content = :content, created = now()";
            $stmt = $this->conn->prepare($query);
            $stmt->bindParam(":title", $this->title);
            $stmt->bindParam(":content", $this->content);
            if (!$stmt->execute()) {
                $this->error[] = 'Запись в базу не прошла!';
            }
        }
    
        public function setTitle(string $string): void
        {
            if (empty($string)) {
                $this->error[] = 'Поле title не заполнено!';
            } elseif (strlen($string) <= 5) {
                $this->error[] = 'Поле title меньше 5 символов!';
            } else {
                $this->title = htmlspecialchars(strip_tags($string));
            }
        }
    
        public function setContent(string $string): void
        {
            if (empty($string)) {
                $this->error[] = 'Поле content не заполнено!';
            } else {
                $this->content = htmlspecialchars(strip_tags($string));
            }
        }
    
        private function getStatus(): string
        {
            if (empty($this->error)) {
                return '<div class="alert alert-success">Успешно!</div>';
            }
            $string = '';
            foreach ($this->error as $error) {
                $string .= "<li>$error</li>";
            }
            return "<div class=\"alert alert-danger\"><ol>$string</ol></div>";
        }
    }


    И в коде вызов, например:
    ...
    if (isset($_GET['title']) && isset($_GET['text'])) {
        $c = new SomeClass();
        $c->setTitle($_GET['title']);
        $c->setContent($_GET['text']);
        $c->create;
    }
    ...
    Ответ написан
    Комментировать