PHP 8 中的混合伪类型
PHP8中的混合类型是一种新的内置联合类型。混合类型等价于array|bool|callable|int|float。混合类型与完全省略类型不太相似。
这意味着,程序员只是忘了写它。
有时程序员更喜欢省略某些特定类型以保持与旧版本的兼容性。
PHP8中的混合类型可以采用任何类型的属性/返回/参数。我们可以说它包括了PHP中的null、callable、resource、所有类对象或所有标量类型。混合类型相当于联合类型。
int|float|bool|string|null|array|object|callable|resource
示例:PHP8中的混合类型
在PHP8中,Mixed是一种伪/虚拟类型。它代表了PHP可以处理的几种类型,这意味着我们不能将变量转换为混合,因为它没有任何逻辑。
$foo = (mixed) $bar;
注意:gettype()和get_debug_type()函数也永远不能返回混合作为变量的类型。
我们不能与其他类型混合使用。
function(mixed|FooClass $bar): int|mixed {}
注意:在上面的代码中,两种联合类型都是不允许的,它会给出一个致命的错误。
输出结果
Fatal error: Type mixed can only be used as a standalone type in C:\xampp\htdocs\gud.php on line 2
示例:使用混合类型的PHP8程序代码
输出结果Array ( [0] => 10 [1] => string [2] => Array ( ) )