PHP 8.0 là gì?
Giới thiệu PHP 8.0
PHP được xem là trợ lý đắc lực giúp người dùng vừa có thể làm việc với một đối tượng, vừa xử lý các tình huống bất ngờ nảy sinh.
Một phiên bản PHP phù hợp sẽ phát huy tối đa hiệu suất website của bạn.
Phiên bản PHP mặc định được kích hoạt cho các domain có sẵn hoặc tạo mới là PHP 7.4 . Tuy nhiên một số trường hợp mã nguồn yêu cầu hoạt động trên trên 1 phiên bản khác, bạn có thể chọn phiên bản PHP mong muốn cho website.
Được phát hành vào ngày 26/11/2020, PHP 8.0 là một
bản cập nhật với nhiều ưu điểm vượt bậc của ngôn ngữ PHP. Do PHP 8.0 có nhiều sự thay đổi so với phiên bản trước đó, bạn sẽ cần thực hiện một số thao tác với code của mình để có thể vận hành trên PHP 8.0. Tuy nhiên, nếu bạn đã cập nhật từ PHP 7.0 trở lên, thao tác nâng cấp lên PHP 8.0 sẽ không quá phức tạp.
Nhà đồng sáng lập và nhà tư vấn chính tại PHP Consulting Company – Stefan Priebsch – khuyên rằng việc chuyển sang PHP 8.0 đòi hỏi phải chuẩn bị nhiều hơn so với việc nâng cấp từ PHP 5.x lên PHP 7, do các vấn đề cũ đã bị xóa khỏi ngôn ngữ này.
(Theo TechRepublic)PHP 8.0 có gì đặc biệt?
PHP 8.0 sở hữu những tính năng mới gồm JIT, named arguments, union types, attributes, constructor property promotion, match expression, nullsafe operator mang đến hiệu suất cao lớn nhờ thay đổi cú pháp. Đồng thời, PHP 8.0 cũng có những cải tiến nhỏ trong kiểu hệ thống, xử lý lỗi và tính nhất quán.
Hiện tại, tất cả hosting tại TinoHost đều đã bắt đầu hỗ trợ PHP 8.0.8 điểm nổi bật vượt trội của PHP 8.0
#1. Đối số được đặt tên (Named arguments)
Có thể đặt tên khi truyền tham số là điểm nổi bật đầu tiên của PHP 8.0.
Một function sở hữu từ 3 tham số trở lên sẽ dễ khiến developer lúng túng khi sử dụng vì không nhớ rõ thứ tự truyền hoặc ý nghĩa của từng tham số. Khắc phục tình trạng này, Named arguments sẽ giúp bạn:
- Chuyển các giá trị vào một hàm, chỉ xác định các thông số bắt buộc, bỏ qua các thông số tùy chọn.
- Các lập luận không phụ thuộc vào trật tự và tự ghi lại
#2. Thuộc tính (Attributes)
Với các phiên bản PHP 7 trở về trước, người dùng phải khai báo các thuộc tính một cách rõ ràng.
Ông Nikita Popov (tác giả của RFC) tiết lộ sẽ rút gọn lại cách khai báo các tham số bằng cách đặt trong các tham số ở hàm khởi tạo. Do đó, thay vì chú thích PHPDoc, thuộc tính của PHP 8.0 giúp bạn sử dụng siêu dữ liệu có cấu trúc với cú pháp gốc của PHP.
PHP 8.0 có code định nghĩa ngắn hơn để khởi tạo thuộc tính.
RFC này bổ sung thêm đường cú pháp để tạo các đối tượng giá trị hoặc đối tượng truyền dữ liệu. Thay vì chỉ định các thuộc tính của lớp và một hàm tạo cho chúng, PHP 8.0 có thể kết hợp chúng thành một.
#4. Hợp nhất các kiểu (Union types)
Bản chất PHP được định kiểu động của PHP. Do đó, trong nhiều trường hợp, kiểu liên hợp này sẽ rất hữu ích.
Thay vì các chú thích PHPDoc cho sự kết hợp của các kiểu, bạn có thể sử dụng các khai báo kiểu liên minh gốc được xác thực trong thời gian chạy. Vì thế, một biến có thể thuộc một vài kiểu dữ liệu.
#5. Trình biên dịch JIT (Just-in-Time Compiler)
Đây là một kỹ thuật được PHP tích hợp vào việc biên dịch code PHP thành mã máy.
Điểm cải tiến nổi bật của JIT chính là trình biên dịch mới bổ sung JIT Compiler giúp PHP 8.0 đạt hiệu suất cao gấp 1,5 – 2 lần so với PHP 7. Hiệu suất ứng dụng ngang bằng hoặc tốt hơn với PHP 7.4.
Trong hai công cụ biên dịch JIT, Tracing JIT hứa hẹn mang đến hiệu suất cao gấp 3 lần trên các điểm chuẩn tổng hợp.
Bạn có thể tham khảo Biểu đồ so sánh tốc độ của PHP khi có JIT và không có JIT như hình bên dưới:
Trong đó:
- bench.php, micro_bech.php, N-body, Mandelbrot đều là các bài test trên ứng dụng PHP đơn giản.
- Các bài test còn lại, lần lượt test trên các ứng dụng PHP có độ phức tạp tăng dần.
- Đường màu đen, kẻ dọc ở biểu đồ trên là ngưỡng tối đa khi PHP không sử dụng JIT.
Nhận xét: - Áp dụng JIT chỉ đạt hiệu năng cao với ứng dụng PHP đơn giản.
- Ngược lại, JIT không mang lại nhiều ưu điểm với các ứng dụng PHP phức tạp, sử dụng các Framework, CMS phổ biến như WordPress, Symfony, …
#6. Toán tử Nullsafe (Nullsafe operator)
Với các phiên bản PHP trước, để tránh lỗi, ta thường kiểm tra giá trị có khác
null hay không trước khi truy cập. Nullsafe operator của PP 8.0 cho phép bạn truy cập vào giá trị của một thuộc tính ở giá trị
null mà không bị lỗi.
Sử dụng một chuỗi các cuộc gọi với toán tử nullsafe mới có thể được xem là phương án thay thế cho điều kiện kiểm tra
null.
Khi đánh giá một phần tử trong chuỗi fails, quá trình thực thi của toàn bộ chuỗi sẽ bị hủy bỏ. Lúc này, toàn bộ chuỗi được gán là
null.
Thay vì:
$startDate = $booking->getStartDate();
$dateAsString = $startDate ? $startDate->asDateTimeString() : null;
Bạn sẽ:
$dateAsString = $booking->getStartDate()?->asDateTimeString();
#7. Biểu thức đối sánh (Match expression)
Tương tự như switch, Match expression là một biểu thức, kết quả có thể được lưu trữ trong một biến hoặc được trả về.
Các nhánh so sánh chỉ hỗ trợ các biểu thức một dòng và không cần dấu ngắt để kết thúc lệnh. Match có thể kết hợp các điều kiện, sử dụng so sánh kiểu nghiêm ngặt và không thực hiện bất kỳ kiểu ép buộc nào.
#8. Nhất quán lỗi cho các chức năng nội bộ (Consistent type errors for internal functions)
Các hàm do người dùng định nghĩa trong PHP sẽ đưa ra
TypeError. Trong khi đó, các hàm nội bộ sẽ phát ra cảnh báo và trả về null. Từ phiên bản PHP 8.0, hành vi của các hàm nội bộ đã được thực hiện nhất quán.
Nếu xác thực các tham số không thành công, các chức năng nội bộ sẽ đưa ra
Exception.
Hiểu cách khác, những cảnh báo liên quan đến check kiểu dữ liệu parameter, sẽ được PHP chuyển đổi thành
Exception.
Còn nhiều tính năng đã được cải tiến, mời bạn trải nghiệm và chia sẻ với TinoHost nhé!
Mọi thắc mắc và góp ý liên quan, xin vui lòng liên hệ ngay TinoHost để được tư vấn chi tiết hoặc Fanpage để cập nhật những thông tin mới nhất.
Với bề dày kinh nghiệm hơn 5 năm cung cấp hosting, dịch vụ cho thuê máy chủ, các dịch vụ liên quan đến tên miền và bảo mật website, hãy để TinoHost đồng hành cùng bạn trên con đường khẳng định thương hiệu trên bản đồ công nghệ toàn cầu!