vendor/symfony/validator/ConstraintViolation.php line 19

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\Validator;
  11. /**
  12.  * Default implementation of {@ConstraintViolationInterface}.
  13.  *
  14.  * @author Bernhard Schussek <bschussek@gmail.com>
  15.  */
  16. class ConstraintViolation implements ConstraintViolationInterface
  17. {
  18.     private string|\Stringable $message;
  19.     private ?string $messageTemplate;
  20.     private array $parameters;
  21.     private ?int $plural;
  22.     private mixed $root;
  23.     private ?string $propertyPath;
  24.     private mixed $invalidValue;
  25.     private $constraint;
  26.     private ?string $code;
  27.     private mixed $cause;
  28.     /**
  29.      * Creates a new constraint violation.
  30.      *
  31.      * @param string|\Stringable $message         The violation message as a string or a stringable object
  32.      * @param string|null        $messageTemplate The raw violation message
  33.      * @param array              $parameters      The parameters to substitute in the
  34.      *                                            raw violation message
  35.      * @param mixed              $root            The value originally passed to the
  36.      *                                            validator
  37.      * @param string|null        $propertyPath    The property path from the root
  38.      *                                            value to the invalid value
  39.      * @param mixed              $invalidValue    The invalid value that caused this
  40.      *                                            violation
  41.      * @param int|null           $plural          The number for determining the plural
  42.      *                                            form when translating the message
  43.      * @param string|null        $code            The error code of the violation
  44.      * @param Constraint|null    $constraint      The constraint whose validation
  45.      *                                            caused the violation
  46.      * @param mixed              $cause           The cause of the violation
  47.      */
  48.     public function __construct(string|\Stringable $message, ?string $messageTemplate, array $parametersmixed $root, ?string $propertyPathmixed $invalidValueint $plural nullstring $code nullConstraint $constraint nullmixed $cause null)
  49.     {
  50.         $this->message $message;
  51.         $this->messageTemplate $messageTemplate;
  52.         $this->parameters $parameters;
  53.         $this->plural $plural;
  54.         $this->root $root;
  55.         $this->propertyPath $propertyPath;
  56.         $this->invalidValue $invalidValue;
  57.         $this->constraint $constraint;
  58.         $this->code $code;
  59.         $this->cause $cause;
  60.     }
  61.     /**
  62.      * Converts the violation into a string for debugging purposes.
  63.      */
  64.     public function __toString(): string
  65.     {
  66.         if (\is_object($this->root)) {
  67.             $class 'Object('.\get_class($this->root).')';
  68.         } elseif (\is_array($this->root)) {
  69.             $class 'Array';
  70.         } else {
  71.             $class = (string) $this->root;
  72.         }
  73.         $propertyPath = (string) $this->propertyPath;
  74.         if ('' !== $propertyPath && '[' !== $propertyPath[0] && '' !== $class) {
  75.             $class .= '.';
  76.         }
  77.         if (null !== ($code $this->code) && '' !== $code) {
  78.             $code ' (code '.$code.')';
  79.         }
  80.         return $class.$propertyPath.":\n    ".$this->getMessage().$code;
  81.     }
  82.     /**
  83.      * {@inheritdoc}
  84.      */
  85.     public function getMessageTemplate(): string
  86.     {
  87.         return (string) $this->messageTemplate;
  88.     }
  89.     /**
  90.      * {@inheritdoc}
  91.      */
  92.     public function getParameters(): array
  93.     {
  94.         return $this->parameters;
  95.     }
  96.     /**
  97.      * {@inheritdoc}
  98.      */
  99.     public function getPlural(): ?int
  100.     {
  101.         return $this->plural;
  102.     }
  103.     /**
  104.      * {@inheritdoc}
  105.      */
  106.     public function getMessage(): string|\Stringable
  107.     {
  108.         return $this->message;
  109.     }
  110.     /**
  111.      * {@inheritdoc}
  112.      */
  113.     public function getRoot(): mixed
  114.     {
  115.         return $this->root;
  116.     }
  117.     /**
  118.      * {@inheritdoc}
  119.      */
  120.     public function getPropertyPath(): string
  121.     {
  122.         return (string) $this->propertyPath;
  123.     }
  124.     /**
  125.      * {@inheritdoc}
  126.      */
  127.     public function getInvalidValue(): mixed
  128.     {
  129.         return $this->invalidValue;
  130.     }
  131.     /**
  132.      * Returns the constraint whose validation caused the violation.
  133.      */
  134.     public function getConstraint(): ?Constraint
  135.     {
  136.         return $this->constraint;
  137.     }
  138.     /**
  139.      * Returns the cause of the violation.
  140.      */
  141.     public function getCause(): mixed
  142.     {
  143.         return $this->cause;
  144.     }
  145.     /**
  146.      * {@inheritdoc}
  147.      */
  148.     public function getCode(): ?string
  149.     {
  150.         return $this->code;
  151.     }
  152. }