ReflectionUnionType::getTypes

(PHP 8)

ReflectionUnionType::getTypes返回联合类型中包含的类型

描述

public ReflectionUnionType::getTypes(): array

返回联合类型中包含的类型的反射。

参数

此函数没有参数。

返回值

一个 ReflectionType 对象的数组。

示例

示例 #1 ReflectionUnionType::getTypes() 示例

<?php
function someFunction(int|float $number) {}

$reflectionFunc = new ReflectionFunction('someFunction');
$reflectionParam = $reflectionFunc->getParameters()[0];

var_dump($reflectionParam->getType()->getTypes());

上面的示例将输出类似以下内容

array(2) {
    [0] =>
    class ReflectionNamedType#4(0) {
    }
    [1] =>
    class ReflectionNamedType#5(0) {
    }
}

参见

添加注释

用户贡献的注释 2 个注释

3
baptiste at pillot dot fr
11 个月前
排序

与预期相反,返回的 ReflectionType 对象数组不会按照在源代码中声明的类型的顺序排序。

- 类、接口、特征、可迭代(被 Traversable 替换)、ReflectionIntersectionType 对象、父类和自身:这些类型将首先返回,按照它们被声明的顺序。
- 静态和所有内置类型(可迭代被数组替换)将在接下来返回。它们将始终按照以下顺序返回:静态、可调用、数组、字符串、整数、浮点数、布尔值(或 false 或 true)、null。

请注意,在联合类型中使用时,可迭代是 Traversable|array 的别名。ReflectionUnionType::getTypes 将返回这两个 ReflectionNamedType 对象,而不是名为 'iterable' 的单个对象。

示例
<?php
class PC {}
class
C extends PC {
function
f(): null|bool|float|int|parent|PC|string|iterable|(ReflectionClass&ReflectionProperty)|callable|static|self|C {}
}
echo
join(', ', array_map(
function(
$t) { return ($t instanceof ReflectionIntersectionType) ? '<intersection>' : $t->getName(); },
(new
ReflectionMethod('C', 'f'))->getReturnType()->getTypes()
)) .
"\n";
?>

将显示
parent, PC, Traversable, <intersection>, self, C, static, callable, array, string, int, float, bool, null

尝试一下:https://onlinephp.io/c/777c6
0
baptiste at pillot dot fr
11 个月前
ReflectionUnionType::getTypes 只能返回 ReflectionNamedType 和/或 ReflectionIntersectionType 对象数组。
To Top