Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. YamlValidator.php

function YamlValidator::validate

Overrides ConstraintValidatorInterface::validate

File

vendor/symfony/validator/Constraints/YamlValidator.php, line 26

Class

YamlValidator
@author Kev <https://github.com/symfonyaml&gt;

Namespace

Symfony\Component\Validator\Constraints

Code

public function validate(mixed $value, Constraint $constraint) : void {
    if (!$constraint instanceof Yaml) {
        throw new UnexpectedTypeException($constraint, Yaml::class);
    }
    if (null === $value || '' === $value) {
        return;
    }
    if (!\is_scalar($value) && !$value instanceof \Stringable) {
        throw new UnexpectedValueException($value, 'string');
    }
    $value = (string) $value;
    
    /** @see \Symfony\Component\Yaml\Command\LintCommand::validate() */
    $prevErrorHandler = set_error_handler(function ($level, $message, $file, $line) use (&$prevErrorHandler) {
        if (\E_USER_DEPRECATED === $level) {
            throw new ParseException($message, $this->getParser()
                ->getRealCurrentLineNb() + 1);
        }
        return $prevErrorHandler ? $prevErrorHandler($level, $message, $file, $line) : false;
    });
    try {
        (new Parser())->parse($value, $constraint->flags);
    } catch (ParseException $e) {
        $this->context
            ->buildViolation($constraint->message)
            ->setParameter('{{ error }}', $e->getMessage())
            ->setParameter('{{ line }}', $e->getParsedLine())
            ->setCode(Yaml::INVALID_YAML_ERROR)
            ->addViolation();
    } finally {
        restore_error_handler();
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal