Новое в Symfony 5.1: Добавлена поддержка типизированных свойств в PropertyInfo

Symfony 5.1 будет выпущен в мае 2020 года. Это первая статья серии, в которой показаны наиболее важные новые функции, представленные в этой версии Symfony.

В PHP 7.4, выпущенном 28 ноября 2019 года, добавлена поддержка типизированных свойств, которые позволяют определять тип переменных при их объявлении:

use Symfony\Component\HttpFoundation\Request;

class SomeClass
{
    public int $id;
    protected string $name;
    private ?bool $logResult;
    public Request $request;

    // ...
}

Компонент PropertyInfo извлекает информацию о свойствах классов PHP, используя несколько источников (метаданные Doctrine, отражение PHP, конфигурацию PHPdoc и т. Д.) В Symfony 5.1 улучшили этот компонент, чтобы также извлекать информацию из типизированных свойств PHP.

Учитывая предыдущий пример, это будет результат при использовании Symfony 5.1:

$info = $propertyInfo->getTypes(SomeClass::class, 'logResult');

// $info = [
//     class Symfony\Component\PropertyInfo\Type (6) {
//         private $builtinType          => string(4) "bool"
//         private $nullable             => bool(true)
//         private $class                => NULL
//         private $collection           => bool(false)
//         private $collectionKeyType    => NULL
//         private $collectionValueType  => NULL
//     }
// ]