编辑说明:此行为是由于 PHP 7 的向后兼容性问题导致的,并且可能在 PHP 9 中得到修复。
2024-02-14
PHP 8.3
接口 AnyType {}
接口 Type2 {}
函数 test (AnyType|null $param) {}
ReflectionParameter 将返回 ReflectionNamedType,而不是 ReflectionUnionType(基本上忽略了 null)。
但是,函数 test (AnyType|Type2|null $param) {}
将返回包含 3 个类型的 ReflectionUnionType,而不是 2 个(这次没有忽略 null)。
对我来说,这仅仅是 PHP 中的错误和逻辑错误。