field = $fieldName; $this->value = $value; $this->args = $args; $this->message = $message ?? $this->message; $this->messageKeys = [ ":value" => $this->value, ":field" => $this->field ]; } //Если правило валидации не прошло, то возвращаем сообщение об ошибке public function validate() { if (!$this->rule()) return $this->messageError(); return true; } //Замена ключей на конкретные значения в сообщении об ошибке private function messageError(): string { foreach ($this->messageKeys as $key => $value) { $message = str_replace($key, (string)$value, $this->message); } return $message; } //Основное правило валидации. Его должны переопределить классы-потомки abstract public function rule(): bool; }