@@ -411,6 +411,41 @@ library is present::
411411 $phpDocExtractor->getShortDescription($class, $property);
412412 $phpDocExtractor->getLongDescription($class, $property);
413413
414+ PhpStanExtractor
415+ ~~~~~~~~~~~~~~~~
416+
417+ .. note ::
418+
419+ This extractor depends on the `phpstan/phpdoc-parser `_ and
420+ `phpdocumentor/reflection-docblock `_ libraries.
421+
422+ This extractor fetches information thanks to the PHPStan parser. It gathers
423+ information from annotations of properties and methods, such as ``@var ``,
424+ ``@param `` or ``@return ``::
425+
426+ // src/Domain/Foo.php
427+ class Foo
428+ {
429+ private $bar;
430+
431+ /**
432+ * @param string $bar
433+ */
434+ public function __construct($bar) {
435+ $this->bar = $bar;
436+ }
437+ }
438+
439+ // Extraction.php
440+ use Symfony\Component\PropertyInfo\Extractor\PhpStanExtractor;
441+
442+ $phpStanExtractor = new PhpStanExtractor();
443+ $phpStanExtractor->getTypesFromConstructor(Foo::class, 'bar');
444+
445+ .. versionadded :: 6.1
446+
447+ The ``PhpStanExtractor `` was introduced in Symfony 6.1.
448+
414449SerializerExtractor
415450~~~~~~~~~~~~~~~~~~~
416451
@@ -436,7 +471,7 @@ with the ``property_info`` service in the Symfony Framework::
436471
437472 // the `serializer_groups` option must be configured (may be set to null)
438473 $serializerExtractor->getProperties($class, ['serializer_groups' => ['mygroup']]);
439-
474+
440475If ``serializer_groups `` is set to ``null ``, serializer groups metadata won't be
441476checked but you will get only the properties considered by the Serializer
442477Component (notably the ``@Ignore `` annotation is taken into account).
@@ -497,6 +532,7 @@ service by defining it as a service with one or more of the following
497532
498533.. _`phpDocumentor Reflection` : https://github.com/phpDocumentor/ReflectionDocBlock
499534.. _`phpdocumentor/reflection-docblock` : https://packagist.org/packages/phpdocumentor/reflection-docblock
535+ .. _`phpstan/phpdoc-parser` : https://packagist.org/packages/phpstan/phpdoc-parser
500536.. _`Doctrine ORM` : https://www.doctrine-project.org/projects/orm.html
501537.. _`symfony/serializer` : https://packagist.org/packages/symfony/serializer
502538.. _`symfony/doctrine-bridge` : https://packagist.org/packages/symfony/doctrine-bridge
0 commit comments