ประเภทผสมใน 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 ( ) )