Документация Symfony подразумевает, что возможна множественная подсказка типов. Зачем?

Я предполагал, что многократная подсказка не возможна. Тем не менее, я видел этот конструктор в Документация по Symfony API документация.

__construct(array $options = array(), AbstractProxy|NativeSessionHandler|SessionHandlerInterface|null $handler = null, MetadataBag $metaBag = null)

По второму параметру кажется, что возможно несколько типов. Может кто-нибудь объяснить, что я вижу?

3

Решение

Это хороший вопрос, хотя ответ на самом деле не является подсказкой типа в языковом смысле. Больше документации

https://github.com/symfony/symfony/blob/7c026bb33e8ca96b285402f7fe7ae27a04a74ea9/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php#L99

Где это определено в источнике, без подсказки типа

public function __construct(array $options = array(), $handler = null, MetadataBag $metaBag = null)

https://github.com/symfony/symfony/blob/7c026bb33e8ca96b285402f7fe7ae27a04a74ea9/src/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php#L353

Где функциональность существует, где она просто проверяет instanceof для всех подсказок типа, перечисленных в документации

 if (!$saveHandler instanceof AbstractProxy &&
!$saveHandler instanceof NativeSessionHandler &&
!$saveHandler instanceof \SessionHandlerInterface &&
null !== $saveHandler) {
throw new \InvalidArgumentException('Must be instance of AbstractProxy or NativeSessionHandler; implement \SessionHandlerInterface; or be null.');
}

Эти подсказки используются IDE для проверки целостности кода, как упомянуто в комментариях Pazi.

Более подробную информацию можно найти здесь

http://www.phpdoc.org/docs/latest/guides/types.html

Чтобы иметь возможность отслеживать, какие типы могут использоваться в значении, вы можете использовать
труба, или оператор ИЛИ (|) для разделения каждого типа, который связан
значение может быть.

В следующем примере метод или функция вернет либо
строка или ноль в качестве значения:

/ ** @return string | null * / Большинство IDE распознают этот формат как
ну и предлагаем автозаполнение

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]