Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Kiểu Mixed (Mixed Pseudo Type) trong PHP 8

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