diff --git a/UPGRADE-7.3.md b/UPGRADE-7.3.md
index d5b63c91db217..3824b8b24e139 100644
--- a/UPGRADE-7.3.md
+++ b/UPGRADE-7.3.md
@@ -8,6 +8,12 @@ Read more about this in the [Symfony documentation](https://symfony.com/doc/7.3/
If you're upgrading from a version below 7.1, follow the [7.2 upgrade guide](UPGRADE-7.2.md) first.
+FrameworkBundle
+---------------
+
+ * Not setting the `framework.property_info.with_constructor_extractor` option explicitly is deprecated
+ because its default value will change in version 8.0
+
Serializer
----------
diff --git a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
index d63b0172335d1..02bfe6af4ce24 100644
--- a/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
+++ b/src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md
@@ -7,6 +7,7 @@ CHANGELOG
* Add support for assets pre-compression
* Rename `TranslationUpdateCommand` to `TranslationExtractCommand`
* Add JsonEncoder services and configuration
+ * Add new `framework.property_info.with_constructor_extractor` option to allow enabling or disabling the constructor extractor integration
7.2
---
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php
index 45d08a975bd83..a2a571f834be0 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php
@@ -73,6 +73,7 @@ class UnusedTagsPass implements CompilerPassInterface
'monolog.logger',
'notifier.channel',
'property_info.access_extractor',
+ 'property_info.constructor_extractor',
'property_info.initializable_extractor',
'property_info.list_extractor',
'property_info.type_extractor',
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
index 99592fe4989c9..cbfe657a636ce 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
@@ -1226,8 +1226,23 @@ private function addPropertyInfoSection(ArrayNodeDefinition $rootNode, callable
->arrayNode('property_info')
->info('Property info configuration')
->{$enableIfStandalone('symfony/property-info', PropertyInfoExtractorInterface::class)}()
+ ->children()
+ ->booleanNode('with_constructor_extractor')
+ ->info('Registers the constructor extractor.')
+ ->end()
+ ->end()
->end()
->end()
+ ->validate()
+ ->ifTrue(fn ($v) => $v['property_info']['enabled'] && !isset($v['property_info']['with_constructor_extractor']))
+ ->then(function ($v) {
+ $v['property_info']['with_constructor_extractor'] = false;
+
+ trigger_deprecation('symfony/property-info', '7.3', 'Not setting the "with_constructor_extractor" option explicitly is deprecated because its default value will change in version 8.0.');
+
+ return $v;
+ })
+ ->end()
;
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
index eb0838228a783..5245e8597405f 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
@@ -135,6 +135,7 @@
use Symfony\Component\Notifier\Transport\TransportFactoryInterface as NotifierTransportFactoryInterface;
use Symfony\Component\Process\Messenger\RunProcessMessageHandler;
use Symfony\Component\PropertyAccess\PropertyAccessor;
+use Symfony\Component\PropertyInfo\Extractor\ConstructorArgumentTypeExtractorInterface;
use Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor;
use Symfony\Component\PropertyInfo\Extractor\PhpStanExtractor;
use Symfony\Component\PropertyInfo\PropertyAccessExtractorInterface;
@@ -427,7 +428,7 @@ public function load(array $configs, ContainerBuilder $container): void
}
if ($propertyInfoEnabled) {
- $this->registerPropertyInfoConfiguration($container, $loader);
+ $this->registerPropertyInfoConfiguration($config['property_info'], $container, $loader);
}
if ($this->readConfigEnabled('json_encoder', $container, $config['json_encoder'])) {
@@ -657,6 +658,8 @@ public function load(array $configs, ContainerBuilder $container): void
->addTag('property_info.list_extractor');
$container->registerForAutoconfiguration(PropertyTypeExtractorInterface::class)
->addTag('property_info.type_extractor');
+ $container->registerForAutoconfiguration(ConstructorArgumentTypeExtractorInterface::class)
+ ->addTag('property_info.constructor_extractor');
$container->registerForAutoconfiguration(PropertyDescriptionExtractorInterface::class)
->addTag('property_info.description_extractor');
$container->registerForAutoconfiguration(PropertyAccessExtractorInterface::class)
@@ -2040,7 +2043,7 @@ private function registerJsonEncoderConfiguration(array $config, ContainerBuilde
}
}
- private function registerPropertyInfoConfiguration(ContainerBuilder $container, PhpFileLoader $loader): void
+ private function registerPropertyInfoConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader): void
{
if (!interface_exists(PropertyInfoExtractorInterface::class)) {
throw new LogicException('PropertyInfo support cannot be enabled as the PropertyInfo component is not installed. Try running "composer require symfony/property-info".');
@@ -2048,18 +2051,24 @@ private function registerPropertyInfoConfiguration(ContainerBuilder $container,
$loader->load('property_info.php');
+ if (!$config['with_constructor_extractor']) {
+ $container->removeDefinition('property_info.constructor_extractor');
+ }
+
if (
ContainerBuilder::willBeAvailable('phpstan/phpdoc-parser', PhpDocParser::class, ['symfony/framework-bundle', 'symfony/property-info'])
&& ContainerBuilder::willBeAvailable('phpdocumentor/type-resolver', ContextFactory::class, ['symfony/framework-bundle', 'symfony/property-info'])
) {
$definition = $container->register('property_info.phpstan_extractor', PhpStanExtractor::class);
$definition->addTag('property_info.type_extractor', ['priority' => -1000]);
+ $definition->addTag('property_info.constructor_extractor', ['priority' => -1000]);
}
if (ContainerBuilder::willBeAvailable('phpdocumentor/reflection-docblock', DocBlockFactoryInterface::class, ['symfony/framework-bundle', 'symfony/property-info'], true)) {
$definition = $container->register('property_info.php_doc_extractor', PhpDocExtractor::class);
$definition->addTag('property_info.description_extractor', ['priority' => -1000]);
$definition->addTag('property_info.type_extractor', ['priority' => -1001]);
+ $definition->addTag('property_info.constructor_extractor', ['priority' => -1001]);
}
if ($container->getParameter('kernel.debug')) {
diff --git a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
index e83c4dfe611d1..ecd0fe6820116 100644
--- a/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
+++ b/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php
@@ -56,6 +56,7 @@
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Messenger\DependencyInjection\MessengerPass;
use Symfony\Component\Mime\DependencyInjection\AddMimeTypeGuesserPass;
+use Symfony\Component\PropertyInfo\DependencyInjection\PropertyInfoConstructorPass;
use Symfony\Component\PropertyInfo\DependencyInjection\PropertyInfoPass;
use Symfony\Component\Routing\DependencyInjection\AddExpressionLanguageProvidersPass;
use Symfony\Component\Routing\DependencyInjection\RoutingResolverPass;
@@ -164,6 +165,7 @@ public function build(ContainerBuilder $container): void
$container->addCompilerPass(new FragmentRendererPass());
$this->addCompilerPassIfExists($container, SerializerPass::class);
$this->addCompilerPassIfExists($container, PropertyInfoPass::class);
+ $this->addCompilerPassIfExists($container, PropertyInfoConstructorPass::class);
$container->addCompilerPass(new ControllerArgumentValueResolverPass());
$container->addCompilerPass(new CachePoolPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION, 32);
$container->addCompilerPass(new CachePoolClearerPass(), PassConfig::TYPE_AFTER_REMOVING);
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_info.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_info.php
index 90587839d54c4..f45d6ce2bc67f 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_info.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_info.php
@@ -11,6 +11,7 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+use Symfony\Component\PropertyInfo\Extractor\ConstructorExtractor;
use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
use Symfony\Component\PropertyInfo\PropertyAccessExtractorInterface;
use Symfony\Component\PropertyInfo\PropertyDescriptionExtractorInterface;
@@ -43,9 +44,14 @@
->set('property_info.reflection_extractor', ReflectionExtractor::class)
->tag('property_info.list_extractor', ['priority' => -1000])
->tag('property_info.type_extractor', ['priority' => -1002])
+ ->tag('property_info.constructor_extractor', ['priority' => -1002])
->tag('property_info.access_extractor', ['priority' => -1000])
->tag('property_info.initializable_extractor', ['priority' => -1000])
+ ->set('property_info.constructor_extractor', ConstructorExtractor::class)
+ ->args([[]])
+ ->tag('property_info.type_extractor', ['priority' => -999])
+
->alias(PropertyReadInfoExtractorInterface::class, 'property_info.reflection_extractor')
->alias(PropertyWriteInfoExtractorInterface::class, 'property_info.reflection_extractor')
;
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd b/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
index 9cb89207ddade..b44f1ccc4cd59 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
@@ -370,6 +370,7 @@
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php
index b4b8eb875b111..f1e88b11beaa0 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php
@@ -808,7 +808,7 @@ protected static function getBundleDefaultConfig()
],
'property_info' => [
'enabled' => !class_exists(FullStack::class),
- ],
+ ] + (!class_exists(FullStack::class) ? ['with_constructor_extractor' => false] : []),
'router' => [
'enabled' => false,
'default_uri' => null,
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/full.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/full.php
index 0a32ce8b36434..cb776282936c8 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/full.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/full.php
@@ -74,7 +74,10 @@
],
],
],
- 'property_info' => true,
+ 'property_info' => [
+ 'enabled' => true,
+ 'with_constructor_extractor' => true,
+ ],
'type_info' => true,
'ide' => 'file%%link%%format',
'request' => [
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/property_info.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/property_info.php
index b234c452756e1..e2437e2c2aa83 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/property_info.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/property_info.php
@@ -7,5 +7,6 @@
'php_errors' => ['log' => true],
'property_info' => [
'enabled' => true,
+ 'with_constructor_extractor' => false,
],
]);
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/property_info_with_constructor_extractor.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/property_info_with_constructor_extractor.php
new file mode 100644
index 0000000000000..fa143d2e1f57d
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/property_info_with_constructor_extractor.php
@@ -0,0 +1,12 @@
+loadFromExtension('framework', [
+ 'annotations' => false,
+ 'http_method_override' => false,
+ 'handle_all_throwables' => true,
+ 'php_errors' => ['log' => true],
+ 'property_info' => [
+ 'enabled' => true,
+ 'with_constructor_extractor' => true,
+ ],
+]);
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/validation_auto_mapping.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/validation_auto_mapping.php
index ae5bea2ea5389..67bac4a326c8d 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/validation_auto_mapping.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/validation_auto_mapping.php
@@ -5,7 +5,10 @@
'http_method_override' => false,
'handle_all_throwables' => true,
'php_errors' => ['log' => true],
- 'property_info' => ['enabled' => true],
+ 'property_info' => [
+ 'enabled' => true,
+ 'with_constructor_extractor' => true,
+ ],
'validation' => [
'email_validation_mode' => 'html5',
'auto_mapping' => [
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/full.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/full.xml
index a3e5cfd88b5ff..23d325e61c7a4 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/full.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/full.xml
@@ -44,7 +44,7 @@
-
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/property_info.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/property_info.xml
index 5f49aabaa9ed4..19bac44d96f90 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/property_info.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/property_info.xml
@@ -8,6 +8,6 @@
-
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/property_info_with_constructor_extractor.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/property_info_with_constructor_extractor.xml
new file mode 100644
index 0000000000000..df8dabe0b63fc
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/property_info_with_constructor_extractor.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/validation_auto_mapping.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/validation_auto_mapping.xml
index c60691b0b61a3..96659809137a3 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/validation_auto_mapping.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/validation_auto_mapping.xml
@@ -6,7 +6,7 @@
-
+
foo
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/full.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/full.yml
index 8e272d11bfb47..28c4336d93872 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/full.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/full.yml
@@ -64,7 +64,8 @@ framework:
default_context:
enable_max_depth: false
type_info: ~
- property_info: ~
+ property_info:
+ with_constructor_extractor: true
ide: file%%link%%format
request:
formats:
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/property_info.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/property_info.yml
index de05e6bb7a480..4fde73710a56f 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/property_info.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/property_info.yml
@@ -6,3 +6,4 @@ framework:
log: true
property_info:
enabled: true
+ with_constructor_extractor: false
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/property_info_with_constructor_extractor.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/property_info_with_constructor_extractor.yml
new file mode 100644
index 0000000000000..a43762df335e7
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/property_info_with_constructor_extractor.yml
@@ -0,0 +1,9 @@
+framework:
+ annotations: false
+ http_method_override: false
+ handle_all_throwables: true
+ php_errors:
+ log: true
+ property_info:
+ enabled: true
+ with_constructor_extractor: true
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/validation_auto_mapping.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/validation_auto_mapping.yml
index 55a43886fc67b..e81203e245727 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/validation_auto_mapping.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/validation_auto_mapping.yml
@@ -4,7 +4,9 @@ framework:
handle_all_throwables: true
php_errors:
log: true
- property_info: { enabled: true }
+ property_info:
+ enabled: true
+ with_constructor_extractor: true
validation:
email_validation_mode: html5
auto_mapping:
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
index 0446eb5d2e7c6..f5c93cefda589 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
@@ -1676,6 +1676,14 @@ public function testPropertyInfoEnabled()
{
$container = $this->createContainerFromFile('property_info');
$this->assertTrue($container->has('property_info'));
+ $this->assertFalse($container->has('property_info.constructor_extractor'));
+ }
+
+ public function testPropertyInfoWithConstructorExtractorEnabled()
+ {
+ $container = $this->createContainerFromFile('property_info_with_constructor_extractor');
+ $this->assertTrue($container->has('property_info'));
+ $this->assertTrue($container->has('property_info.constructor_extractor'));
}
public function testPropertyInfoCacheActivated()
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ApiAttributesTest/config.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ApiAttributesTest/config.yml
index 8b218d48cbb06..00bdd8ab9df96 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ApiAttributesTest/config.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ApiAttributesTest/config.yml
@@ -5,4 +5,6 @@ framework:
serializer:
enabled: true
validation: true
- property_info: { enabled: true }
+ property_info:
+ enabled: true
+ with_constructor_extractor: true
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ContainerDump/config.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ContainerDump/config.yml
index 3efa5f950450e..48bff32400cdb 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ContainerDump/config.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/ContainerDump/config.yml
@@ -15,6 +15,8 @@ framework:
translator: true
validation: true
serializer: true
- property_info: true
+ property_info:
+ enabled: true
+ with_constructor_extractor: true
csrf_protection: true
form: true
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Serializer/config.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Serializer/config.yml
index 2f20dab9e8bc3..3c0c354174fbd 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Serializer/config.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/Serializer/config.yml
@@ -10,7 +10,9 @@ framework:
max_depth_handler: Symfony\Bundle\FrameworkBundle\Tests\Fixtures\Serializer\MaxDepthHandler
default_context:
enable_max_depth: true
- property_info: { enabled: true }
+ property_info:
+ enabled: true
+ with_constructor_extractor: true
services:
serializer.alias:
diff --git a/src/Symfony/Component/PropertyInfo/Extractor/ConstructorArgumentTypeExtractorInterface.php b/src/Symfony/Component/PropertyInfo/Extractor/ConstructorArgumentTypeExtractorInterface.php
index 571b6fa6f014a..ea9e87b871f56 100644
--- a/src/Symfony/Component/PropertyInfo/Extractor/ConstructorArgumentTypeExtractorInterface.php
+++ b/src/Symfony/Component/PropertyInfo/Extractor/ConstructorArgumentTypeExtractorInterface.php
@@ -18,8 +18,6 @@
* Infers the constructor argument type.
*
* @author Dmitrii Poddubnyi
- *
- * @internal
*/
interface ConstructorArgumentTypeExtractorInterface
{
@@ -27,8 +25,6 @@ interface ConstructorArgumentTypeExtractorInterface
* Gets types of an argument from constructor.
*
* @return LegacyType[]|null
- *
- * @internal
*/
public function getTypesFromConstructor(string $class, string $property): ?array;
@@ -36,8 +32,6 @@ public function getTypesFromConstructor(string $class, string $property): ?array
* Gets type of an argument from constructor.
*
* @param class-string $class
- *
- * @internal
*/
public function getTypeFromConstructor(string $class, string $property): ?Type;
}