Giới Thiệu
PHP 8.5 sắp ra mắt và thật sự, đây là một trong những phiên bản mà tôi cảm thấy phấn khởi với vai trò là một lập trình viên. Một số tính năng có thể nhỏ, nhưng chúng lại cảm giác rất đúng, bạn biết đấy? Tôi đang nói về những thứ giúp cuộc sống của bạn dễ dàng hơn mỗi ngày. Hãy cùng tôi khám phá những điểm nổi bật của phiên bản này.
Toán Tử Pipe: Không Còn Biến Tạm Thời
Toán tử pipe, bạn có thể đã thấy nó xuất hiện trong các tweet và RFC. Và vâng, nó thực sự hữu ích.
Hãy tưởng tượng điều này: bạn có một hàm gọi là sendEmail. Nó nhận một địa chỉ email, nhưng trước khi gửi, bạn muốn làm sạch nó. Cắt khoảng trắng, chuyển thành chữ thường… những việc thông thường. Trước PHP 8.5, bạn có thể làm như sau:
php
$email = " TEST@EXAMPLE.COM ";
$email = trim($email);
$email = strtolower($email);
sendEmail($email);
Biến tạm thời, các phép gán lại, tất cả những thứ đó. Giờ đây với toán tử pipe:
php
" TEST@EXAMPLE.COM "
|> trim()
|> strtolower()
|> sendEmail();
Không còn biến tạm thời, mọi thứ chảy từ trái sang phải. Điều này làm cho mã của bạn trở nên sạch sẽ hơn rất nhiều.
Thuộc Tính No Discard: Ngừng Bỏ Qua Giá Trị Trả Về
Tiếp theo là #[NoDiscard]. Điều này thực sự tuyệt vời. Đôi khi bạn gọi một hàm, và bạn phải sử dụng giá trị trả về, nhưng mọi người (hay thậm chí chính bạn) có thể quên. PHP 8.5 hiện có thể cảnh báo bạn nếu bạn bỏ qua nó.
php
#[NoDiscard]
function getName(): string {
return "Nuno";
}
Nếu bạn làm như sau:
php
getName(); // PHP sẽ cảnh báo bạn: "Này, bạn nên sử dụng giá trị trả về!"
Điều này buộc bạn phải xử lý kết quả hoặc chuyển đổi thành void nếu bạn thực sự có ý định bỏ qua nó. Thật sự, tính năng này là một trong ba tính năng hàng đầu của tôi. Khi kết hợp với toán tử pipe, bạn có thể viết các chuỗi mã sạch sẽ và an toàn mà không có cảnh báo.
Closures Trong Biểu Thức Hằng
PHP 8.5 cho phép bạn sử dụng closures tĩnh ở những nơi chỉ chấp nhận giá trị tại thời điểm biên dịch. Hằng số lớp, giá trị mặc định của thuộc tính, đối số thuộc tính… giờ đây bạn có thể sử dụng closures trong tất cả chúng.
php
class Example {
public const VALIDATOR = static function($value) {
return !empty($value);
};
}
Trước đây, điều này sẽ thất bại, giờ nó hoạt động. Bạn có thể gắn logic tái sử dụng trực tiếp vào hằng số hoặc thuộc tính. Điều này cực kỳ quan trọng cho các framework như Laravel, nơi sử dụng rất nhiều xác thực hoặc siêu dữ liệu.
Trợ Giúp Mảng: array_first() và array_last()
Bạn có biết việc lấy phần tử đầu tiên hoặc cuối cùng của mảng khó chịu như thế nào không? Ý tôi là, PHP có reset() và end(), nhưng chúng thay đổi con trỏ nội bộ. Giờ đây chúng ta có:
php
$users = ["Adrian", "Maria", "Pedro"];
php
$first = array_first($users); // Adrian
$last = array_last($users); // Pedro
Thật đơn giản, trực quan, và không làm rối con trỏ mảng của bạn. Thay đổi nhỏ, nhưng khác biệt lớn.
Hằng Số Toàn Cục Với Thuộc Tính
Một điểm tinh tế khác. PHP 8.5 cho phép bạn thêm thuộc tính vào hằng số toàn cục. Trước đây, điều này là không thể. Giờ đây, bạn có thể làm như sau:
php
#[Deprecated("Sử dụng NEW_CONSTANT thay thế")]
const OLD_CONSTANT = 42;
Hãy thử echo nó:
php
echo OLD_CONSTANT; // 42 + cảnh báo về việc ngừng sử dụng
Nó thực sự là siêu dữ liệu cho các hằng số. Nếu framework hoặc gói của bạn sử dụng hằng số cho cấu hình, giờ đây bạn có thể đính kèm thông tin bổ sung một cách sạch sẽ.
Lấy Bộ Xử Lý Ngoại Lệ
Đối với các nhà phát triển framework, điều này thật tuyệt. PHP 8.5 giới thiệu get_exception_handler(). Nếu bạn đã từng sử dụng set_exception_handler(), bạn biết rằng thật khó để kiểm tra closure hiện có. Giờ đây, bạn có thể thực sự lấy nó:
php
set_exception_handler(fn($e) => echo "Bắt được: " . $e->getMessage());
$handler = get_exception_handler();
var_dump($handler);
Rất hoàn hảo cho việc ghi log, gỡ lỗi, hoặc thậm chí thay đổi xử lý ngoại lệ tại thời gian chạy. Các framework như Laravel có thể sử dụng điều này thực sự tốt cho việc xử lý lỗi toàn cục.
Bộ Định Dạng Danh Sách Intel
Và đây là một điều thú vị: IntlListFormatter. Không phải là điều bạn sẽ sử dụng hàng ngày, nhưng khi bạn cần, nó thật hoàn hảo. Bạn có thể lấy một danh sách và định dạng nó theo quy tắc địa phương.
php
$formatter = new \Intl\IntlListFormatter('en', \Intl\IntlListFormatter::TYPE_AND);
echo $formatter->format(['Lisbon', 'Porto', 'Coimbra']); // "Lisbon, Porto, và Coimbra"
Nó tự động xử lý “và”, “hoặc”, và các cách định dạng danh sách khác theo địa phương. Một cải thiện nhỏ nhưng tuyệt vời cho các ứng dụng quốc tế hóa.
Cải Tiến Nội Bộ Nhỏ Và Chỉ CLI
Ngay cả những cải tiến nhỏ trong PHP 8.5 cũng tạo ra sự khác biệt, đặc biệt nếu bạn làm việc với CLI hoặc quan tâm đến việc gỡ lỗi và cấu hình nội bộ.
1. Sự Khác Biệt php.ini (PHP-IN-DIFF)
Bạn có bao giờ ước mình có thể nhanh chóng thấy những cài đặt nào bạn đã thay đổi so với cấu hình PHP mặc định không? PHP 8.5 làm điều này siêu dễ dàng với một lệnh CLI mới:
php
php -i --diff
Điều này cho bạn biết chính xác những tùy chọn php.ini nào khác với mặc định. Ví dụ, tôi luôn tăng giới hạn bộ nhớ và tắt thời gian chờ cho các script trong khi thử nghiệm:
php
memory_limit = -1
max_execution_time = 0
Trước đây, bạn phải so sánh thủ công hoặc cuộn qua phpinfo(). Giờ đây, nó thực sự được tích hợp. Một cải thiện nhỏ nhưng cứu sống cho bất kỳ ai đang gỡ lỗi các thiết lập PHP.
2. Hằng Số Ngày Xây Dựng PHP
PHP 8.5 giới thiệu một hằng số mới cho bạn biết chính xác khi nào binary được xây dựng. Bạn muốn kiểm tra?
php
echo PHP_BUILD_DATE;
Kết quả:
php
2025-09-17 14:32:00
Điều này thật tuyệt nếu bạn đang chạy nhiều binary PHP hoặc muốn xác minh phiên bản/xây dựng mà bạn đang sử dụng. Không có gì đột phá, nhưng lại là một cải thiện về chất lượng cuộc sống.
3. Khuyến Khích Thuộc Tính Cuối
PHP 8.5 cải tiến khuyến khích thuộc tính với khả năng đánh dấu các thuộc tính riêng lẻ là final. Bạn có thể đã làm cho toàn bộ lớp là cuối, nhưng giờ bạn có thể nhắm đến các thuộc tính cụ thể trong hàm khởi tạo:
php
class User {
public function __construct(
final public string $username,
public string $email
) {}
}
Giờ đây, $username không thể bị ghi đè trong các lớp con. Điều này tinh tế, nhưng đối với các mã nguồn nơi tính bất biến quan trọng, đây là một cải thiện lớn về sự rõ ràng.
4. Điều Chỉnh CLI và Gỡ Lỗi
Các cải tiến nhỏ khác bao gồm:
- Báo cáo lỗi mặc định tốt hơn khi sử dụng các ghi đè
php -d. - Cảnh báo sạch hơn cho các tính năng đã ngừng sử dụng trong chế độ CLI.
- Tối ưu hóa nhỏ dưới nắp làm cho các script chạy nhanh hơn một chút hoặc tiêu thụ ít bộ nhớ hơn trong các trường hợp biên.
Không có gì trong số này yêu cầu thay đổi mã, nhưng nếu bạn là một nhà phát triển framework hoặc người DevOps, chúng khiến việc sử dụng PHP hàng ngày trở nên mượt mà hơn.
Tại Sao Ngay Cả Những Thay Đổi Nhỏ Cũng Quan Trọng
Điều quan trọng là: PHP 8.5 không chỉ là về các tính năng hào nhoáng. Ngay cả những cải tiến nội bộ nhỏ và điều chỉnh CLI giảm ma sát trong quy trình làm việc của bạn. Đó chính là phép màu thực sự ở đây, ít thời gian chiến đấu với cấu hình, nhiều thời gian hơn để viết mã thực sự làm điều gì đó.
Kết Luận
PHP 8.5 được trang bị đầy đủ các tính năng cải thiện chất lượng cuộc sống. Không phải tất cả chúng đều thay đổi thế giới của bạn, nhưng cùng nhau chúng làm cho ngôn ngữ trở nên mượt mà, an toàn và thú vị hơn.
- Toán tử pipe: chuỗi sạch, không có biến tạm.
- NoDiscard: không bao giờ bỏ qua giá trị trả về quan trọng nữa.
- Closures trong hằng số: gắn logic ở bất kỳ đâu tại thời điểm biên dịch.
- Trợ giúp mảng: truy cập dễ dàng vào phần tử đầu tiên và cuối cùng.
- Thuộc tính trên hằng số: thêm siêu dữ liệu một cách sạch sẽ.
- Kiểm tra bộ xử lý ngoại lệ: thân thiện với framework.
- Bộ định dạng danh sách Intl: danh sách thông minh, theo khu vực.
PHP 8.5 cảm giác như một trong những phiên bản khiến bạn vui vẻ khi viết PHP trở lại. Nó không hào nhoáng, nhưng nó thông minh, thực tiễn và ưu tiên lập trình viên.
Nếu bạn chưa kiểm tra nó, hãy bắt đầu thử nghiệm beta. Tôi đảm bảo rằng một số tính năng trong số này sẽ nhanh chóng trở thành thói quen trong mã hàng ngày của bạn.
— — — — — — — — — — — — — — — — — — — — — —
Bạn đã học được điều gì tốt hôm nay?
Hãy thể hiện tình yêu của bạn. 🫰
© Muhammad Usman LinkedIn
Nhà phát triển WordPress | Chiến lược gia website | Chuyên gia SEO
Đừng quên đăng ký Hành Trình Lập Trình để thể hiện sự ủng hộ của bạn.