Công cụ thành viên

Công cụ trang web


php:version:7-8:new

Các điểm mới ở PHP 8.0 so với 7.4

Tên đối số trong hàm

Cho phép truyền tham số vào hàm thông qua tên, không cần theo thứ tự. Ví dụ:

function getMyName($id, $email) 
{
    echo "id: " . $id . "\n";
    echo "email: " . $email . "\n";
}
getMyName(email: 'my@gmail.com', id: 1);

Tên đối số là giá trị cố định, không được là biến. Ví dụ getMyName($email: 'my@gmail.com', $id: 1); sẽ lỗi.

Attributes

Hiểu một cách đơn giản đây là cách comment thay cho PHPDoc ví dụ

#[Attribute]
class MyAttribute
{
}

Xem thêm nhiều mô tả https://php.watch/articles/php-attributes

Constructor Promotion

Cho phép viết luôn các thuộc tính vào hàm __construct của class. Khi đó trình biên dịch tự động tạo ra thuộc tính đó luôn. Ví dụ

class Point {
    public function __construct(protected int $x, protected int $y = 0) {
    }
}

Điều này tương đương viết

class Point {
    protected int $x;
    protected int $y = 0;
 
    public function __construct($x, $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
}

Union Types

Trong ví dụ trên, trước đây chỉ viết được 1 type ví dụ int

protected int $x;

Bây giờ kết hợp được nhiều. Ví dụ

protected int|float|null $x;

Điều này cho phép thuộc tính $x nhận số nguyên, số thực hoặc null

Match Expression

Gần giống như là switch. Không cần break, tự break khi tìm thấy lần đầu tiên. Nếu không có default và match không trả về kết quả sẽ bị trang trắng cho throw new UnhandledMatchError(). Giá trị so sánh ở đây chính xác cả kiểu dữ liệu. Ví dụ '8' (char 8) khác với 8 (số 8)

Ví dụ

$food = 'cake';
 
$return_value = match ($food) {
    'apple', 'my' => 'This food is an apple',
    'bar' => 'This food is a bar',
    'cake' => 'This food is a cake',
};
 
var_dump($return_value);

Nullsafe Operator

Trước đây nếu class truy cập null sẽ gây ra lỗi ví dụ

$user = null;
$user->getUserid(); // Lỗi

Bây giờ có thể viết

$user?->getUserid();

Một số bổ sung khác

Bổ sung class WeakMap, ValueError… xem thêm tại đây

php/version/7-8/new.txt · Sửa đổi lần cuối: 2022/12/19 09:20 bởi hoaquynhtim99