PHP 8 中的混合伪类型
phpserver side programmingprogramming更新于 2025/8/5 0:22:17
PHP 8 中的混合类型是一种新的内置联合类型。混合类型等同于 array|bool|callable|int|float。混合类型与完全省略类型并不完全相同。
这意味着程序员只是忘记写了。
有时程序员更喜欢省略某些特定类型以保持与旧版本的兼容性。
PHP 8 中的混合类型可以接受任何类型的属性/返回值/参数。我们可以说它包括 null、callable、resource、所有类对象或 PHP 中的所有标量类型。混合类型等同于联合类型。
int|float|bool|string|null|array|object|callable|resource
示例:PHP 8 中的混合类型
<?php
class Student{
public mixed $studentProperty;
public function emp(mixed $emp): mixed {}
}
?>
在 PHP 8 中,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
示例:使用混合类型的 PHP 8 程序代码
<?php
function debug_function(mixed ...$data){
print_r($data);
}
debug_function(10, 'string', []);
?>
输出
Array ( [0] => 10 [1] => string [2] => Array ( ) )

