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
   (
   )
)

相关文章