编辑注意:这种行为是由于 PHP 7 的 BC 问题,可能会在 PHP 9 中修复。
2024-02-14
PHP 8.3
interface AnyType {}
interface Type2 {}
function test (AnyType|null $param) {}
ReflectionParameter 将返回 ReflectionNamedType,而不是 ReflectionUnionType(null 基本被忽略)。
但是,function test (AnyType|Type2|null $param) {}
将返回带有 3 种类型的 ReflectionUnionType,而不是 2 种(这次 null 没有被忽略)。
在我看来,这只是 PHP 中的错误和逻辑错误。