- Bao gồm property hooks, khả năng hiển thị bất đối xứng, DOM API được cập nhật, cải thiện hiệu năng, sửa lỗi và tinh gọn tổng thể
- Cung cấp property hooks hỗ trợ các thuộc tính được tính toán mà IDE và công cụ phân tích tĩnh có thể hiểu nguyên bản
- Giới thiệu khả năng hiển thị bất đối xứng, cho phép kiểm soát độc lập phạm vi đọc và ghi của thuộc tính.
- Tính năng mới
- Thông qua thuộc tính
#[\Deprecated], có thể áp dụng cơ chế ngừng dùng hiện có của PHP cho các hàm, phương thức và hằng số lớp do người dùng định nghĩa.
- DOM API mới bao gồm hỗ trợ tuân thủ tiêu chuẩn cho việc phân tích tài liệu HTML5 và sửa nhiều lỗi tương thích lâu năm của chức năng DOM.
- Có thể xử lý số với độ chính xác tùy ý theo hướng đối tượng bằng đối tượng
BcMath\Number.
- Cung cấp các hàm mảng mới như
array_find(), array_find_key(), array_any(), array_all().
- Cung cấp các lớp con mới của PDO: Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite.
- Có thể truy cập thuộc tính và phương thức của đối tượng mới được khởi tạo mà không cần dấu ngoặc.
- Lớp, giao diện và hàm mới
- Lazy Objects mới, triển khai JIT dựa trên IR Framework.
- Bổ sung hàm
request_parse_body(), bcceil(), bcdivmod(), bcfloor(), bcround().
- Bổ sung các phương thức như
DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond().
- Bổ sung các hàm
mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst().
- Bổ sung các hàm
pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), pcntl_waitid().
- Bổ sung các phương thức
ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed(), ReflectionProperty::isDynamic().
- Bổ sung các hàm
http_get_last_response_headers(), http_clear_last_response_headers(), fpow().
- Bổ sung các phương thức
XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri(), XMLWriter::toMemory().
- Bổ sung hàm
grapheme_str_split().
- Ngừng dùng và thay đổi phá vỡ tương thích
- Các extension IMAP, OCI8, PDO_OCI, pspell bị loại khỏi gói đi kèm và được chuyển sang PECL.
- Kiểu tham số nullable ngầm định bị ngừng dùng.
- Việc dùng _ làm tên lớp bị ngừng dùng.
- Việc nâng 0 lên lũy thừa âm bị ngừng dùng.
- Truyền mode không hợp lệ vào
round() sẽ gây ra ValueError.
- Hằng số lớp của các extension nay đã được gán kiểu.
- Lớp GMP nay được đánh dấu là final.
- Các hằng số và hàm liên quan đến MYSQLI bị ngừng dùng.
stream_bucket_make_writeable() và stream_bucket_new() nay trả về các thể hiện StreamBucket.
- Thay đổi hành vi của
exit().
- Hằng số E_STRICT bị ngừng dùng.
- Cải thiện hiệu năng và cú pháp
- Cải thiện hiệu năng, cú pháp và độ an toàn kiểu.
- Khuyến nghị nâng cấp lên PHP 8.4.
3 bình luận
Nhờ WordPress và Laravel, ít nhất đây vẫn là một ngôn ngữ chưa đến mức chết đói.
Đây là một ngôn ngữ mà dù WordPress hay Laravel có sụp đổ thì bạn vẫn không chết đói.
Ý kiến trên Hacker News
RFC đã nêu rõ lý do
$this->countryCodekhông gây ra đệ quy vô hạn. Việc truy cập thuộc tính trong PHP có thể mang ý nghĩa khác nhau tùy theo ngữ cảnh tạo cảm giác khá "ma thuật".Với tư cách là một lập trình viên PHP, tôi lo lắng về định hướng của PHP. Các tính năng ngôn ngữ mới làm tăng độ phức tạp của ngôn ngữ để đổi lấy lợi ích đáng ngờ.
Tôi vui khi thấy PHP vẫn đang phát triển mạnh. Năm 2021 tôi từng lo lắng khi Nikita Popov rời đi, nhưng PHP vẫn là một ngôn ngữ tốt với nhiều nhà phát triển vẫn đang hoạt động.
Tôi mong chờ property hooks nhất. Đây là tính năng tôi từng nhớ ở C#.
__get()và__set(), nhưng cách đó nặng nề và cần rất nhiều chú thích PHPDoc.Khi xem phần nạp chồng accessor cho mảng, tôi phát hiện ra "Property Hooks". Tôi ngạc nhiên khi biết đây là tính năng mới được thêm gần đây.
Tôi hài lòng với bản phát hành PHP mới. Có rất nhiều cải tiến như stack trace tốt hơn cho closure, cải thiện hiệu năng, hỗ trợ HTML5, lazy object và hơn thế nữa.
Tôi mong chờ các đối tượng bcmath. Điều tôi thích là có thể kiểm tra kiểu dữ liệu mà không cần lớp bao bọc, hơn là các toán tử số học.
Tôi vui vì PHP vẫn đang tiếp tục phát triển. Điều đó gợi lại ký ức khi tôi bắt đầu làm freelancer.
Hàm
array_findmới của PHP cho thấy vấn đề trong thiết kế ngôn ngữ. Nó giốngarray_searchhiện có nhưng thứ tự đối số lại khác.Tôi không hiểu
public private(set).readonly publiccó vẻ phù hợp hơn.private(set)của Swift.