ประเภทผสมใน PHP 8 เป็นประเภทยูเนี่ยนในตัวใหม่ ชนิดผสมจะเท่ากับ อาร์เรย์|bool|callable|int|float . การผสมแบบไม่เหมือนกับการละเว้นแบบไปเลย
นั่นหมายความว่าโปรแกรมเมอร์เพิ่งลืมเขียนมัน
บางครั้งโปรแกรมเมอร์ชอบที่จะละเว้นบางประเภทเพื่อให้เข้ากันได้กับเวอร์ชันที่เก่ากว่า
ชนิดผสมใน PHP 8 สามารถใช้คุณสมบัติ/ผลตอบแทน/พารามิเตอร์ประเภทใดก็ได้ เราสามารถพูดได้ว่ามันรวมถึงค่า null, callable, ทรัพยากร, คลาสอ็อบเจกต์ทั้งหมด หรือประเภทสเกลาร์ทั้งหมดใน 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 มิกซ์เป็นประเภทเทียม/เสมือน มันแสดงถึงหลายประเภทที่ 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 ( ) )