Giới thiệu PHP 8.5
PHP tiếp tục tiến bước với phiên bản 8.5, mang đến hàng loạt thay đổi “nhỏ nhưng chất” giúp lập trình viên viết code dễ đọc hơn, gọn gàng hơn và debug thoải mái hơn. Không có cú hích “cách mạng” như JIT của PHP 8.0, nhưng PHP 8.5 tập trung tối ưu trải nghiệm lập trình, bổ sung các hàm “nhỏ mà hữu ích”, đồng thời loại bỏ dần các tính năng lỗi thời.
Hãy cùng CodeTutHub điểm qua các điểm mới nổi bật và những gì cần lưu ý khi nâng cấp nhé! 🚀
🔥 Tính năng mới nổi bật trong PHP 8.5
1. Pipe operator (|>) – Code sáng sủa, từng bước rõ ràng
Thay vì lồng nhiều hàm với nhau, giờ đây bạn có thể viết tuần tự bằng pipe:
$result = "Hello World"
|> strtoupper(...)
|> str_shuffle(...)
|> trim(...);
echo $result;
// Hoặc: inline
$result = strtoupper("Hello World") |> str_shuffle(...) |> trim(...);So sánh với cách cũ:
$result = trim(str_shuffle(strtoupper("Hello World")));
Pipe giúp code giống như “luồng xử lý”, rõ ràng từng bước một.
2. Hàm curl_multi_get_handles() – Quản lý cURL dễ hơn
Nếu bạn từng dùng nhiều request song song với curl_multi, chắc hẳn bạn phải tự lưu danh sách các handle. Giờ đây, PHP hỗ trợ trực tiếp:
$multi = curl_multi_init();
curl_multi_add_handle($multi, $ch1);
curl_multi_add_handle($multi, $ch2);
$handles = curl_multi_get_handles($multi);
print_r($handles); // [$ch1, $ch2]
3. Hằng số PHP_BUILD_DATE
Bạn có thể biết chính xác khi nào bản PHP của mình được build:
echo PHP_BUILD_DATE; // Ví dụ: "Nov 15 2025 10:30:45"
Hữu ích khi debug hoặc quản lý môi trường chạy.
4. Hàm get_exception_handler() và get_error_handler()
Hai hàm mới cho phép bạn lấy về handler hiện tại:
$currentErrorHandler = get_error_handler();
$currentExceptionHandler = get_exception_handler();
var_dump($currentErrorHandler, $currentExceptionHandler);
Cực kỳ tiện khi viết framework hoặc middleware.
5. Stack trace cho PHP Fatal errors
Trước đây, nếu gặp lỗi fatal (ví dụ gọi hàm không tồn tại), PHP chỉ báo lỗi dòng cuối. PHP 8.5 sẽ in ra đầy đủ stack trace, giúp bạn lần theo dễ dàng:
Fatal error: Call to undefined function foo()
Stack trace:
#0 file.php(10): bar()
#1 file.php(20): main()
6. Kiểm tra ngôn ngữ viết RTL (Right-To-Left)
Hàm mới cho i18n:
var_dump(locale_is_right_to_left('ar')); // true
var_dump(Locale::isRightToLeft('en_US')); // false
Cực kỳ hữu ích khi bạn làm web đa ngôn ngữ (ví dụ tiếng Ả Rập, Hebrew).
7. Hàm array_first() và array_last() – Đỡ phải dùng trick
$users = ['Alice', 'Bob', 'Charlie'];
echo array_first($users); // Alice
echo array_last($users); // Charlie
$empty = [];
var_dump(array_first($empty)); // null
Không cần reset() hay end() nữa!
8. CLI: php --ini=diff
Chạy lệnh:
php --ini=diff
Kết quả: chỉ ra các INI directives đã thay đổi so với mặc định. Debug môi trường cực nhanh.
9. IntlListFormatter – Định dạng danh sách theo locale
Ví dụ:
$formatter = new IntlListFormatter('en', IntlListFormatter::TYPE_CONJUNCTION);
echo $formatter->format(['Paris', 'London', 'Tokyo']);
// Paris, London, and Tokyo
Với locale khác:
$formatter = new IntlListFormatter('vi', IntlListFormatter::TYPE_CONJUNCTION);
echo $formatter->format(['Paris', 'London', 'Tokyo']);
// Paris, London và Tokyo
10. INI: max_memory_limit
Giới hạn trên cho memory_limit, tránh việc script hoặc framework tùy chỉnh vượt quá mức bạn cho phép.
Ví dụ trong php.ini:
memory_limit=512M
max_memory_limit=1024M
⚠️ Deprecations trong PHP 8.5
PHP 8.5 cũng loại bỏ dần những tính năng cũ kỹ:
1. Toàn bộ MHASH_* constants deprecated
Nếu bạn còn dùng MHASH_MD5 hoặc tương tự → hãy chuyển sang hash() hoặc hash_hmac().
2. Non-canonical scalar type casts
Các cách cast lỗi thời sẽ cảnh báo:
$val = (boolean) 1; // Deprecated
$val = (double) 1.23; // Deprecated
$val = (integer) "5"; // Deprecated
$val = (binary) "abc"; // Deprecated
→ Hãy dùng dạng chuẩn: (bool), (float), (int), (string).
3. Output handler trả về non-string bị deprecated
ob_start(function($buffer) {
return 123; // Deprecated
});
Giờ handler phải trả về string.
4. Emit output trong custom output buffer handler bị deprecated
Ví dụ:
ob_start(function($buffer) {
echo "Hello"; // Deprecated
return $buffer;
});
Không còn được phép in thêm dữ liệu từ handler.
🎯 Kết luận
PHP 8.5 không phải là một bản nâng cấp “đại tu”, nhưng nó bổ sung nhiều tính năng hữu ích giúp code của bạn:
- Ngắn gọn hơn (
array_first, pipe operator). - Debug dễ dàng hơn (fatal stack trace,
php --ini=diff). - Quốc tế hóa tốt hơn (
IntlListFormatter,isRightToLeft). - Quản lý hệ thống rõ ràng (
PHP_BUILD_DATE,max_memory_limit).
Và quan trọng: PHP 8.5 cũng dọn đường cho tương lai bằng cách deprecated các cú pháp và hàm cũ kỹ.
👉 Nếu bạn đang dùng PHP 8.4, việc nâng cấp lên 8.5 là bước đi hợp lý để tận dụng toàn bộ những cải tiến này.
Xem thêm về các bài viết khác:
PHP 8.4 có gì mới?








