Почему у меня не срабаотывает код?

У меня идет проверка данных на валидацию, только почему-то если открывать через postman то это пустая страница а через ajax это 500 ошибка. В чем я накосячил?
<?php
$name = htmlspecialchars($_POST['name']);
$phone = htmlspecialchars($_POST['phone']);

$validate = new Validate($name, $phone);
echo json_encode($validate->getValidate(), JSON_UNESCAPED_UNICODE);
exit();

class Validate
{
    private $name;
    private $phone;
    public $result = [];

    public function __construct(string $name, string $phone)
    {
        $this->phone = $phone;
        $this->name = $name;
    }

    public function getValidate()
    {
        if (!$this->name && !$this->phone){
            return self::getMessage(true, 'Заполните имя и телефон');
        } elseif (!$this->name){
            return self::getMessage(true, 'Заполните имя');
        } elseif (!$this->phone){
            return self::getMessage(true, 'Заполните телефон');
        } else {
            return self::getMessage(false, 'Сообщение отправлено');
        }
    }

    public static function getMessage(bool $error, string $message)
    {
        return $this->result = [
            'error' => $error,
            'message' => $message
        ];
    }
}
  • Вопрос задан
  • 60 просмотров
Решения вопроса 1
s_panteleev
@s_panteleev
25 yo, Yaroslavl
А зачем Validate::getMessage() статичный?

class Validate
class Validate
{
    private $name;
    private $phone;
    public $result = [];

    public function __construct(string $name, string $phone)
    {
        $this->phone = $phone;
        $this->name = $name;
    }

    public function getValidate()
    {
        if (!$this->name && !$this->phone){
            return $this->getMessage(true, 'Заполните имя и телефон');
        } elseif (!$this->name){
            return $this->getMessage(true, 'Заполните имя');
        } elseif (!$this->phone){
            return $this->getMessage(true, 'Заполните телефон');
        } else {
            return $this->getMessage(false, 'Сообщение отправлено');
        }
    }

    public function getMessage(bool $error, string $message)
    {
        return $this->result = [
            'error' => $error,
            'message' => $message
        ];
    }
}

Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Ошибка в том, что в статическом методе getMessage() используется вызов $this. Стало быть, либо метод не должен быть статическим, либо
return [
            'error' => $error,
            'message' => $message
        ];
Ответ написан
Комментировать
SerafimArts
@SerafimArts
Senior Notepad Reader
У вас ошибка в последнем статическом методе при присвоении данных. Подробнее об ошибке ответит вам сам интерпретатор PHP, т.к. она довольно очевидна. Это просто невнимательность.

При разработке отображение ошибок должно быть включено всегда.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы