Kiểu mixed trong PHP 8 là kiểu union tích hợp sẵn mới. Mixed type tương đương với array|bool|callable|int|float. Kiểu mixed không hoàn toàn giống như bỏ qua kiểu hoàn toàn.
Điều đó nghĩa là, lập trình viên chỉ quên viết kiểu.
Đôi khi lập trình viên thích bỏ qua một số kiểu cụ thể để giữ tương thích với phiên bản cũ.
Kiểu mixed trong PHP 8 có thể nhận bất kỳ kiểu thuộc tính/trả về/tham số nào. Có thể nói bao gồm null, callable, resource, tất cả đối tượng lớp, hoặc tất cả kiểu scalar trong PHP. Kiểu mixed tương đương với kiểu Union.
int|float|bool|string|null|array|object|callable|resource
Ví dụ: Mixed Type trong PHP 8
<?php
class Student {
public mixed $studentProperty;
public function emp(mixed $emp): mixed {}
}
?>
Trong PHP 8, Mixed là kiểu pseudo/ảo. Nó đại diện cho nhiều kiểu PHP xử lý được, nghĩa là không thể ép biến sang mixed vì không có logic.
$foo = (mixed) $bar;
Lưu ý: gettype() và get_debug_type() không bao giờ trả về mixed làm kiểu biến.
Không thể dùng mixed trong union với kiểu khác.
function(mixed|FooClass $bar): int|mixed {}
Lưu ý: Trong code trên, cả hai union type đều không được phép và sẽ báo fatal error.
Kết quả
Fatal error: Type mixed can only be used as a standalone type in C:\xampp\htdocs\gud.php on line 2
Ví dụ: Code PHP 8 dùng Mixed Type
<?php
function debug_function(mixed ...$data) {
print_r($data);
}
debug_function(10, 'string', []);
?>
Kết quả
Array (
[0] => 10
[1] => string
[2] => Array ()
)