8000 [Validator]BC break between 5.3.10 and 5.3.11 with custom Constraint and constructor promotion · Issue #44846 · symfony/symfony · GitHub
[go: up one dir, main page]

Skip to content
[Validator]BC break between 5.3.10 and 5.3.11 with custom Constraint and constructor promotion #44846
Closed
@lyrixx

Description

@lyrixx

Symfony version(s) affected

5.3.11

Description

<?php

namespace App\Validator;

use Symfony\Component\Validator\Constraint;

#[\Attribute(\Attribute::TARGET_CLASS)]
class Foobar extends Constraint
{
    public function __construct(
        public bool $something,
    ) {
    }

    public function getTargets()
    {
        return self::CLASS_CONSTRAINT;
    }
}
  • With SF 5.3.10, the following code works property
  • With SF 5.3.11, it fails
    • error:
    TypeError {#83
      #message: "in_array(): Argument #2 ($haystack) must be of type array, null given"
      #code: 0
      #file: "./vendor/symfony/validator/Constraint.php"
      #line: 238
      trace: {
        ./vendor/symfony/validator/Constraint.php:238 { …}
        ./vendor/symfony/validator/Mapping/ClassMetadata.php:222 { …}
        ./vendor/symfony/validator/Mapping/Loader/AnnotationLoader.php:52 { …}
        ./vendor/symfony/validator/Mapping/Loader/LoaderChain.php:54 { …}
        ./vendor/symfony/validator/Mapping/Factory/LazyLoadingMetadataFactory.php:101 { …}
        ./vendor/symfony/validator/Validator/RecursiveContextualValidator.php:306 { …}
        ./vendor/symfony/validator/Validator/RecursiveContextualValidator.php:138 { …}
        ./vendor/symfony/validator/Validator/RecursiveValidator.php:93 { …}
        ./vendor/symfony/validator/Validator/TraceableValidator.php:66 { …}
        ./reproducer.php:18 {
          › $v = $k->getContainer()->get('validator');
          › $error = $v->validate(new Dto());
          › 
        }
      }
    }
    
    • to make it work, I have to call the parent constructor

How to reproduce

I made a full reproducer here: https://github.com/lyrixx/test/commits/custom-validator

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0