PHP 8 中的混合伪类型
PHP 8 中的混合类型是一种新的内置联合类型。混合类型等同于 array|bool|callable|int|float。混合类型与完全忽略类型并不太相似。
也就是说,编程人员只是忘记了编写它。
有时,编程人员喜欢忽略一些特定的类型,以保持与较旧版本的兼容性。
PHP 8 中的混合类型可以获取任何类型的属性/返回值/参数。我们可以说,它包括 PHP 中的 null、可调用、资源、所有类对象或所有标量类型。混合类型等同于联合类型。
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 可以处理的多种类型,这意味着我们无法将变量强制转换为 mixed,因为它没有任何逻辑。
$foo = (mixed) $bar;
注意:gettype() 和 get_debug_type() 函数也绝不会将 mixed 作为变量的类型返回。
我们不能将 mixed 与其他类型一起在联合中使用。
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 ( ) )
广告