validation_errors = $validation_errors; parent::__construct( $message, $code, $previous, array( 'validation_errors' => $validation_errors ) ); } /** * Get validation errors * * @since 1.0.0 * @return array Validation errors. */ public function get_validation_errors(): array { return $this->validation_errors; } /** * Add validation error * * @since 1.0.0 * @param string $field Field name. * @param string $error Error message. * @return void. */ public function add_validation_error( string $field, string $error ): void { $this->validation_errors[ $field ] = $error; $this->context['validation_errors'] = $this->validation_errors; } /** * Create exception for required field * * @since 1.0.0 * @param string $field_name Required field name. * @return self. */ public static function required_field( string $field_name ): self { return new self( 'Required field is missing', array( $field_name => 'This field is required' ) ); } /** * Create exception for invalid format * * @since 1.0.0 * @param string $field_name Field name. * @param string $expected_format Expected format. * @return self. */ public static function invalid_format( string $field_name, string $expected_format ): self { return new self( 'Invalid field format', array( $field_name => "Expected format: {$expected_format}" ) ); } /** * Create exception for multiple validation errors * * @since 1.0.0 * @param array $errors Validation errors. * @return self. */ public static function multiple_errors( array $errors ): self { return new self( 'Multiple validation errors occurred', $errors ); } /** * Create exception for invalid value * * @since 1.0.0 * @param string $field_name Field name. * @param mixed $value Invalid value. * @param array $allowed_values Allowed values. * @return self. */ public static function invalid_value( string $field_name, $value, array $allowed_values = array() ): self { $error_message = "Invalid value: {$value}"; if ( ! empty( $allowed_values ) ) { $error_message .= '. Allowed values: ' . implode( ', ', $allowed_values ); } return new self( 'Invalid field value', array( $field_name => $error_message ) ); } }