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

更新于: 01-4 月 2021

660 次浏览

开启你的 职业

完成课程,获得证书

开始学习
广告