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 次瀏覽

開啟你的 職業

完成課程,獲得證書

開始學習
廣告
© . All rights reserved.