PHP 8 có gì mới?

PHP 8.0 đã chính thức phát hành ngày 26/11/2020, điều này tương ứng với chu kỳ ba năm thông thường của PHP. Phiên bản tiền nhiệm PHP 7.4 đã ra đời khoảng một năm sau khi hỗ trợ cho PHP 7.1 bị ngừng. Hỗ trợ cho PHP 7.2 cũng sẽ kết thúc vào cuối năm 2020.

PHP 8.0 có gì mới?

Đây là một bản cập nhật lớn chứa khá nhiều các tính năng mới mẻ đã được tối ưu hoá, bao gồm các đối số được đặt tên (named arguments),  thuộc tính (attributes), kiểu liên hợp (union types),  quảng bá thuộc tính phương thức khởi tạo (constructor property promotion), biểu thức match, toán tử nullsafe, JIT và các cải tiến trong kiểu hệ thống, xử lý lỗi và tính nhất quán.

Các tính năng mới các bạn có thể xem thêm tại trang thông báo chính thức của PHP: https://www.php.net/releases/8.0/en.php

Tại đây mình chỉ nói về sự xuất hiện được mong chờ nhất là JIT ở phiên bản PHP 8.0 này.

JIT là gì?

Nói một cách dễ hiểu, JIT (just-in-time compilation) là một kỹ thuật cho phép biên dịch một chương trình thành mã máy ngay lập tức trước khi nó được thực thi. Để hiểu rõ hơn chúng ta cùng ôn lại cách PHP hoạt động trước khi có JIT nhé.

Có thể bạn đã biết rằng PHP là một ngôn ngữ thông dịch, có nghĩa là mã của bạn không cần phải được biên dịch trước khi chạy (giống như C / C ++). Thay vào đó, công cụ PHP sẽ đọc mã của bạn và chạy nó. Nói cách khác, bạn không viết mã để biên dịch thành mã máy cho máy tính chạy, mà viết một đoạn mã và đưa cho PHP chạy.

PHP có một máy ảo gọi là Zend VM. Tại sao gọi nó là máy ảo, vì nó hoạt động giống như máy tính của bạn trong việc chạy mã, như đã giải thích ở trên. Nó chịu trách nhiệm đọc và chạy mã PHP của bạn. Nhưng trước đó, mã của bạn sẽ được PHP đọc và dịch sang opcode, đây là ngôn ngữ mà Zend VM hiểu. Sau đó, Zend VM có thể chạy opcode đó. Bạn có thể xem hình ảnh minh họa cho dễ hiểu.

Cách PHP hoạt động thông qua máy ảo Zend VM

Cách PHP hoạt động thông qua máy ảo Zend VM

Vì vậy, chúng ta cần một bước biên dịch đầu tiên và sau đó là bước thông dịch, và kết quả của bước biên dịch sẽ được lưu trữ ở OPCache (Opcode Cache), do đó bạn không cần phải biên dịch vào lần sau. Đó là cách PHP hoạt động cho đến bây giờ.

Vậy bây giờ với  trình biên dịch JIT, nó sẽ biên dịch opcode thành mã máy và chạy mã đó thay vì đưa nó cho Zend VM để nó chạy. Vì vậy, PHP sẽ không cần thông dịch viên nữa và tất nhiên, mã chạy nhanh hơn rồi.

Bản test tốc độ của PHP với trình biên dịch JIT so với phiên bản cũ.

Có nên cập nhật PHP 8.0 cho website wordpress?

Việc cập nhật mã nguồn trang web của bạn và chuyển sang các phiên bản PHP mới có nhiều lợi thế khác nhau: Các chức năng mới cung cấp nhiều loại hơn, hiệu suất có thể được tăng lên hàng loạt và các lỗ hổng bảo mật được thu hẹp.

Có nên cập nhật PHP 8.0 cho wordpress?

Có nên cập nhật PHP 8.0 cho wordpress?

Tuy nhiên, với phiên bản wordpress 5.6 hiện tại chỉ là “beta tương thích với với PHP 8”, điều này có nghĩa là hầu hết các chức năng cốt lõi của WordPress sẽ hoạt động, nhưng các lỗi không mong muốn vẫn có thể xảy ra, ngay cả khi bạn không cài thêm plugins hoặc themes nào. WordPress đã kêu gọi các thử nghiệm bổ sung với PHP 8 để tìm và sửa nhiều lỗi còn lại nhất có thể.

Một vấn đề cần lưu ý nữa là PHP 8 cũng nghiêm ngặt hơn về cách truyền input cho các hàm, nói cách khác: PHP 8 không nhân hậu như các phiên bản trước. Nó sẽ không cố gắng hoàn toàn để làm cho mã hoạt động cho dù thế nào đi nữa.

Vậy nên trước khi cập nhật, bạn nên chờ thông báo chính thức từ các bản cập nhật sau của wordpress nhé.