PHP 8.6.0 Beta 1 is available for testing

ReflectionParameter::getType

(PHP 7, PHP 8)

ReflectionParameter::getTypeПолучает тип параметра

Описание

public function ReflectionParameter::getType(): ? ReflectionType

Метод получает тип параметра.

Список параметров

Сигнатура функции не содержит параметров.

Возвращаемые значения

Метод возвращает объект класса ReflectionType , если тип параметра задали, иначе null .

Примеры

Пример #1 Пример использования метода ReflectionParameter::getType() начиная с PHP 7.1.0

С PHP 7.1.0 метод ReflectionType::__toString() устарел. Метод ReflectionParameter::getType() может возвратить экземпляр класса ReflectionNamedType . Метод ReflectionNamedType() умеет получать имя типа параметра.

<?php
function someFunction(int $param, $param2) {}
$reflectionFunc = new ReflectionFunction('someFunction');
$reflectionParams = $reflectionFunc->getParameters();
$reflectionType1 = $reflectionParams[0]->getType();
$reflectionType2 = $reflectionParams[1]->getType();
assert($reflectionType1 instanceof ReflectionNamedType);
echo $reflectionType1->getName(), PHP_EOL;
var_dump($reflectionType2);
?>

Результат выполнения приведённого примера:

int
NULL

Пример #2 Использование метода ReflectionParameter::getType() до PHP 7.1.0

<?php
function someFunction(int $param, $param2) {}
$reflectionFunc = new ReflectionFunction('someFunction');
$reflectionParams = $reflectionFunc->getParameters();
$reflectionType1 = $reflectionParams[0]->getType();
$reflectionType2 = $reflectionParams[1]->getType();
echo $reflectionType1, PHP_EOL;
var_dump($reflectionType2);
?>

Результат выполнения приведённого примера в PHP 7.0:

int
NULL

Пример #3 Пример использования ReflectionParameter::getType() в PHP 8.0.0 и более поздних

Начиная с PHP 8.0.0 метод возвращает экземпляр класса ReflectionNamedType или экземпляр класса ReflectionUnionType . Последний — коллекция первых. Чаще для анализа типа удобнее преобразовать тип в массив объектов ReflectionNamedType . Следующая функция вернёт массив из 0 или более экземпляров класса ReflectionNamedType .

<?php
function getAllTypes(ReflectionParameter $reflectionParameter): array
{
 $reflectionType = $reflectionParameter->getType();
 if (!$reflectionType) {
 return [];
 }
 return $reflectionType instanceof ReflectionUnionType
 ? $reflectionType->getTypes()
 : [$reflectionType]
 ;
}
?>

Смотрите также

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы

AltStyle によって変換されたページ (->オリジナル) /