AddThis Sharing Buttons
Share to MessengerMessenger
Zalo
Share to LinkedInLinkedIn Share to Email App Email App

Tổng Quan Về Các Tính Năng Mới Có Trong Phiên Bản PHP 7.4

Phiên bản mới của php 7.4  vừa được phát hành vào ngày 28 tháng 11 năm 2019, Có nhiều thay đổi đáng kể được giới thiệu trong phiên bản này, bao gồm các chức năng và cập nhật các cú pháp trong một  thời gian dài để giúp lập trình viên viết code hiệu quả hơn. Trong bài viết này chúng tôi sẽ giới thiệu các tính năng mới quan trọng nhất của phiên bản php 7.4.

Phiên bản php 7.4 không phải là bản cập nhật nhỏ mà bạn thường thực hiện, nó bao gồm rất nhiều cải tiến mới, thọat nhìn có vẻ đơn giản nhưng đó là một chặng đường dài để giúp chúng ta viết code tốt hơn. Tổng quan về phiên bản php 7.4 các tính năng mới sau:

  • Typed properties 2.0
  • Improved type variance
  • Preloading
  • Null Coalescing Assignment Operator
  • Array Spread Operator
  • Arrow functions
  • Numeric Literal Separator

Typed properties 2.0

Phiên bản mới nhất của PHP mở rộng khái niệm về typed properties. Ban đầu, nó chỉ có sẵn cho các đối số của hàm. Bây giờ,  các type cũng có thể được định nghĩa cho các thuộc tính của mỗi class.

Ví dụ:

Điều quan trọng, phải biết rằng các types của PHP ngoại trừ Callable và Void đều có sẵn thuộc tính trong một class. Khi một illegal type được gán, một lỗi Fatal Error sẽ được trả lại. Nếu bạn muốn biết tại sao Void và Callable không được hỗ trợ, có thể tham khảo thêm tại PHP’s RFC.

Improved type variance (Covariant Returns and Contravariant Parameters)

Cho đến nay, việc khai báo trong parent class hoặc interface sẽ được kiểm tra và xem xét, khi ghi đè các phương thức trong class child.

Ví dụ:

Bây giờ, PHP sẽ cho phép chọn các tham số types ít cụ thể hoặc trả về các types cụ thể:

Tương tự với contravariant arguments:

Preloading

PHP 7.4 đã giới thiệu preloading, Nó có thể chỉ là những gì bạn cần để có thể cải thiện được hiệu suất của code. Nó được xây dựng trên nền của OPCache. Nó biên dịch các file của bạn và sau đó lưu chúng vào bộ nhớ. Bản thân OPCache đã có mặt trong PHP khá lâu nhưng chỉ đến bây giờ nó mới có thể sử dụng được preloading. Làm thế nào để xác định nó đang hoạt động?

Các bước để xác định:

  • Thêm đường dẫn đến file cần loading trước.
  • Các script sẽ chạy khi server khởi động.
  • Tất cả các preloaded file có sẵn trong bộ nhớ cho tất cả các request.
  • Mọi thay đổi đối với preloaded sẽ không có hiệu lực cho đến khi khởi động lại server.

Null Coalescing Assignment Operator

Kể từ phiên bản PHP 7.4, chúng ta có thể sử dụng ưu tiên operator: ??=. Trước đây, chúng tôi sử dụng operator ?? để kiểm tra nếu một biến tồn tại và sau đó gán một giá trị cho biến đó.

Với ??=, biểu thức sẽ thay đổi thành:

Operator ??= sẽ kiểm tra nếu biến bên trái tồn tại, nếu có, nó sẽ giữ nguyên như vậy, nếu biến không tồn tại, nó sẽ gán giá trị cho quyền của nó. Operator rút ngắn biểu thức thông thường, nên không cần thiết phải kiểm tra riêng và gán giá trị mặc định cho các biến. Code cũng được rõ ràng hơn để đọc.

Array Spread Operator

Spread Operator (Spread Operator trong Array Expresstion) là một tính năng mới khác có trong PHP 7.4. Nó làm cho nó có thể hạn chế được rất nhiều việc sử dụng hàm Array_merge. Operator được tích hợp vào trong cấu trúc của ngôn ngữ, giúp nó hoạt động hiệu quả và nhanh hơn array_merge. Hãy nhìn nó hành động:

Chúng ta có thể sử dụng cú pháp của trình tạo:

Arrow functions

Anonymous functions đã trở thành chủ đạo trong PHP trong một thời gian dài. Nhưng nó lại mất khá nhiều thời gian để viết. Bây giờ, các functions dòng đơn có thể được chuyển đổi nhanh chóng thành anonymous functions dưới dạng “arrow functions”.

Trước kia:

Bây giờ:

Numeric Literal Separator

PHP 7.4 dễ dàng thêm dấu gạch dưới để phân tách trực quan các giá trị số. Ví dụ:

Dấu gạch dưới được loại bỏ bởi PHP, Sự thay đổi là hoàn toàn thuần mỹ, giúp dễ dàng làm việc và vận hành với số lượng lớn

Foreign function interface

Foreign Function Interface (viết tắt FFI) cho phép chạy code C bằng cách gọi từ PHP, điều đó có nghĩa PHP extensions sẽ được có thể được viết bằng code PHP thuần, tất nhiên bạn vẫn phải có kiến thức về C

Custom object serialization

Hiện tại, chúng ta có thể tân dụng _sleep và _wakeup cũng như giao diên Serializable. Thật không may, cả hai phương pháp đều có những hạn chế, rất nhiều trong số đó được thay thế bằng phương pháp mới có trong PHP 7.4 – _serialize_unserialize. Cách dung này rất giống với chúng ta sử dụng giao diện Serializable. Thay vì gọi serialize() function, chúng ta có thể trực tiếp trả về dữ liệu tuần tự dưới dạng các tables. Hãy nhìn xem:

Việc triển khai này sẽ giúp giải quyết vấn đề với Serializable.

Reflection for references

Cho đến nay, thư viện đã được sử dụng tất cả các loại thủ thuật để phát hiện tài liệu tham khảo.

Weak references

Thông thường, các object nào có tham chiếu thì nó sẽ hữu dụng, WeakReference class mới sẽ giúp chúng ta gọi tham chiếu đến một object mà không ngăn chặn object bị hủy. Tham chiếu này khá hữu ích trong các cấu trúc giống như bộ nhớ đệm . Hỗ trợ triển khai cache có cấu trúc hơn.

Ví dụ:

Code được trả về:

Sau khi thay đổi:

Lần này nó trở lại:

Phiên bản PHP mới giới thiệu đủ các cải tiến để bất kỳ ai cũng có thể tìm thấy thứ gì đó cho mình. Phiên bản mới cũng được cho là xấp xỉ. Nhanh hơn 10% so với trước đây. Và đó không phải tải trước. Bỏ qua một bên, PHP được cải tiến cũng sẽ hướng object-oriented và có trật tự hơn. Nhưng bạn cũng cần nhớ rằng PHP 7.4 chứa một số chức năng được lên lịch để loại bỏ khỏi ngôn ngữ. Vì nó thường là như vậy, Có thể hiểu rõ hơn tại RFC .

Nguồn tham khảo: