vendor/sonata-project/core-bundle/src/Form/Validator/Constraints/InlineConstraint.php line 135

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of the Sonata Project package.
  5.  *
  6.  * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
  7.  *
  8.  * For the full copyright and license information, please view the LICENSE
  9.  * file that was distributed with this source code.
  10.  */
  11. namespace Sonata\Form\Validator\Constraints;
  12. use Symfony\Component\Validator\Constraint;
  13. /**
  14.  * Constraint which allows inline-validation inside services.
  15.  *
  16.  * @Annotation
  17.  * @Target({"CLASS"})
  18.  */
  19. class InlineConstraint extends Constraint
  20. {
  21.     /**
  22.      * @var mixed
  23.      */
  24.     protected $service;
  25.     /**
  26.      * @var mixed
  27.      */
  28.     protected $method;
  29.     /**
  30.      * @var mixed
  31.      */
  32.     protected $serializingWarning;
  33.     public function __construct($options null)
  34.     {
  35.         parent::__construct($options);
  36.         if ((!\is_string($this->service) || !\is_string($this->method)) && true !== $this->serializingWarning) {
  37.             throw new \RuntimeException('You are using a closure with the `InlineConstraint`, this constraint'.
  38.                 ' cannot be serialized. You need to re-attach the `InlineConstraint` on each request.'.
  39.                 ' Once done, you can set the `serializingWarning` option to `true` to avoid this message.');
  40.         }
  41.     }
  42.     public function __sleep(): array
  43.     {
  44.         if (!\is_string($this->service) || !\is_string($this->method)) {
  45.             return [];
  46.         }
  47.         // Initialize "groups" option if it is not set
  48.         $this->groups;
  49.         return array_keys(get_object_vars($this));
  50.     }
  51.     public function __wakeup()
  52.     {
  53.         if (\is_string($this->service) && \is_string($this->method)) {
  54.             return;
  55.         }
  56.         $this->method = static function () {
  57.         };
  58.         $this->serializingWarning true;
  59.     }
  60.     public function validatedBy()
  61.     {
  62.         return 'sonata.core.validator.inline';
  63.     }
  64.     /**
  65.      * @return bool
  66.      */
  67.     public function isClosure()
  68.     {
  69.         return $this->method instanceof \Closure;
  70.     }
  71.     /**
  72.      * @return mixed
  73.      */
  74.     public function getClosure()
  75.     {
  76.         return $this->method;
  77.     }
  78.     public function getTargets()
  79.     {
  80.         return self::CLASS_CONSTRAINT;
  81.     }
  82.     public function getRequiredOptions()
  83.     {
  84.         return [
  85.             'service',
  86.             'method',
  87.         ];
  88.     }
  89.     /**
  90.      * @return string
  91.      */
  92.     public function getMethod()
  93.     {
  94.         return $this->method;
  95.     }
  96.     /**
  97.      * @return mixed
  98.      */
  99.     public function getService()
  100.     {
  101.         return $this->service;
  102.     }
  103.     /**
  104.      * @return mixed
  105.      */
  106.     public function getSerializingWarning()
  107.     {
  108.         return $this->serializingWarning;
  109.     }
  110. }
  111. class_exists(\Sonata\CoreBundle\Validator\Constraints\InlineConstraint::class);