PHP 8.0, một bản nâng cấp lớn cho ngôn ngữ động phổ biến dành cho lập trình web phía máy chủ, hiện có sẵn dưới dạng bản phát hành, có các kiểu liên hợp, các đối số được đặt tên, thuộc tính và biên dịch Just-In-Time.

Các kiểu Union chấp nhận giá trị của nhiều kiểu dữ liệu khác nhau. Chúng cho phép truyền các đối số cho một hàm dựa trên tên tham số, thay vì vị trí tham số. Điều này làm cho ý nghĩa của đối số tự ghi lại, làm cho đối số độc lập về trật tự và cho phép tùy ý bỏ qua các giá trị mặc định.

Mặc dù PHP đã hỗ trợ hai kiểu liên hợp đặc biệt (Type hoặc Null và array hoặc Traversable), nhưng các kiểu union tùy ý không được ngôn ngữ này hỗ trợ, thay vào đó, ngôn ngữ này đã tận dụng các chú thích phpdoc. Sau generic, các kiểu union đã được coi là “lỗ hổng” lớn nhất trong hệ thống khai báo kiểu PHP.

Hỗ trợ các kiểu union cho phép chuyển kiểu dữ liệu thông tin từ phpdoc sang hàm chữ ký, với các ưu điểm như kiểu kiểu dữ liệu được thực thi và thông tin kiểu dữ liệu ít có khả năng trở nên lỗi thời hoặc bỏ sót các trường hợp cạnh. Ngoài ra, các kiểu dữ liệu được kiểm tra trong quá trình kế thừa và có sẵn thông qua phản ánh. Cú pháp cũng ít giống với chương trình soạn sẵn hơn phpdoc.

Được phát hành vào ngày 26 tháng 11, PHP 8.0 có thể được tải xuống từ trang web php.net. Các khả năng chính sau:

  • Bao gồm Hai công cụ biên dịch JIT, Tracing JIT và Function JIT. Theo dõi JIT cho thấy hiệu suất tốt hơn khoảng 3 lần trên các điểm chuẩn tổng hợp và cải thiện 1,5 lần đến 2 lần trên một số ứng dụng chạy lâu. Hiệu suất ứng dụng điển hình ngang bằng với PHP 7.4.
  • Tương tự như chú thích trong Java và các thuộc tính trong các ngôn ngữ như C # và Rust, các thuộc tính PHP cung cấp một dạng cú pháp siêu dữ liệu, có cấu trúc cho các khai báo về lớp, hằng, hàm, phương thức, tham số và thuộc tính. Các thuộc tính là văn bản được định dạng đặc biệt kèm theo << và >> bằng cách sử dụng lại các mã thông báo hiện có T_SL và T_SR.
  • Các đối số được đặt tên cho phép truyền các đối số đến một hàm dựa trên tên tham số, thay vì vị trí tham số. Điều này làm cho ý nghĩa của đối số tự ghi lại cũng như làm cho đối số độc lập theo thứ tự và cho phép tùy ý bỏ qua các giá trị mặc định.
  • Một toán tử nullsafe,? ->, với đầy đủ các yếu tố đặc trưng, ​​như một sự cải tiến mã hóa.
  • Weak maps cho phép tạo map từ các đối tượng đến các giá trị tùy ý mà không ngăn các đối tượng được sử dụng làm khóa được dọn dẹp. Nếu khóa đối tượng được dọn dẹp, khóa đó sẽ bị xóa khỏi map. Trường hợp sử dụng chung cho các bản đồ yếu là liên kết dữ liệu với các cá thể đối tượng riêng lẻ mà không yêu cầu chúng vẫn tồn tại và làm rò rỉ bộ nhớ một cách hiệu quả trong các quy trình chạy dài.
  • Quảng bá thuộc tính hàm tạo giới thiệu một cú pháp ngắn gọn cho phép kết hợp định nghĩa của thuộc tính và hàm tạo. Khả năng này giải quyết tình huống trong đó định nghĩa các đối tượng giá trị đơn giản yêu cầu rất nhiều mã soạn sẵn, bởi vì tất cả các thuộc tính cần được lặp lại ít nhất bốn lần.
  • Khả năng biểu thức match được thêm vào, tương tự như switch nhưng với ngữ nghĩa an toàn hơn và khả năng trả về giá trị.

Các nguồn kiến thức từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!