PHP 8.3 vừa ra mắt mang đến nhiều tính năng mới và cải tiến quan trọng, giúp các lập trình viên dễ dàng phát triển ứng dụng nhanh hơn và an toàn hơn. Bản phát hành này tiếp tục xu hướng cải thiện hiệu suất, tăng cường tính an toàn trong mã nguồn, và cung cấp nhiều công cụ hữu ích cho lập trình viên. Trong bài viết này, chúng ta sẽ điểm qua một số tính năng đáng chú ý nhất trong PHP 8.3.
1. Readonly Class
Trong PHP 8.2, chúng ta đã có thuộc tính readonly cho phép biến không thể thay đổi sau khi đã được khởi tạo. Đến PHP 8.3, tính năng này được nâng cấp với Readonly Class, cho phép tất cả các thuộc tính trong class trở thành readonly mà không cần khai báo từng thuộc tính riêng lẻ.
readonly class MyClass {
public string $name;
public int $age;
public function __construct(string $name, int $age) {
$this->name = $name;
$this->age = $age;
}
}Khi class được định nghĩa với từ khóa readonly, tất cả các thuộc tính của nó sẽ tự động được gán làm chỉ đọc. Điều này giúp mã trở nên ngắn gọn và dễ hiểu hơn khi làm việc với các class chứa nhiều thuộc tính bất biến.
2. Standalone null, true và false types
PHP 8.3 mang lại sự hỗ trợ cho các kiểu null, true, và false riêng biệt, thay vì gói gọn trong bool và mixed. Điều này giúp mô tả chính xác hơn loại giá trị mà một hàm hoặc biến có thể nhận.
Ví dụ:
function returnsFalse(): false {
return false;
}Kiểu trả về ở đây là chính xác false, không phải bool. Điều này giúp tăng cường độ chính xác trong việc xác định kiểu dữ liệu.
3. Cải thiện về hiệu năng
PHP 8.3 tiếp tục xu hướng tối ưu hóa hiệu năng với các cải tiến trong bộ máy xử lý nội tại. Những cải tiến này giúp các ứng dụng PHP chạy nhanh hơn, giảm độ trễ, và sử dụng tài nguyên hệ thống hiệu quả hơn. Đặc biệt, các thao tác liên quan đến các cấu trúc dữ liệu phổ biến như mảng và chuỗi đã được tối ưu hóa đáng kể.
4. Flexible new
PHP 8.3 cho phép bạn sử dụng cú pháp linh hoạt hơn với từ khóa new trong các biểu thức có tính động. Điều này giúp việc tạo đối tượng trong các ngữ cảnh phức tạp trở nên dễ dàng hơn.
Ví dụ:
$object = new (random_int(0, 1) ? MyClassA::class : MyClassB::class)();Thay vì phải sử dụng cách viết dài dòng hoặc các cấu trúc điều kiện phức tạp, bạn có thể tạo ra đối tượng mới một cách trực tiếp từ biểu thức logic mà không cần khởi tạo thủ công.
5. JsonErrorException
Một điểm sáng khác của PHP 8.3 là việc nâng cấp cách xử lý lỗi liên quan đến JSON. Trước đây, khi xảy ra lỗi trong quá trình xử lý JSON (ví dụ như phân tích cú pháp JSON không hợp lệ), PHP sẽ chỉ trả về false mà không có thông tin chi tiết về lỗi.
Từ PHP 8.3, các hàm liên quan đến JSON sẽ ném ra ngoại lệ JsonErrorException khi gặp lỗi, giúp lập trình viên dễ dàng bắt và xử lý các lỗi này.
try {
json_decode("{invalid json}");
} catch (JsonErrorException $e) {
echo "Lỗi JSON: " . $e->getMessage();
}Điều này giúp cải thiện khả năng gỡ lỗi và tăng cường tính ổn định của ứng dụng.
6. Class Constant Visibility
Trong PHP 8.3, lập trình viên có thể chỉ định mức độ truy cập (visibility) cho các hằng số (class constants). Trước đây, hằng số luôn ở chế độ public, nhưng giờ đây bạn có thể đặt chúng thành private hoặc protected nếu cần.
class MyClass {
private const PRIVATE_CONST = 'secret';
protected const PROTECTED_CONST = 'protected';
public const PUBLIC_CONST = 'public';
}Điều này giúp bạn kiểm soát chặt chẽ hơn việc sử dụng các hằng số trong và ngoài class, tăng cường tính bảo mật và khả năng tái sử dụng mã.
7. Array Unpacking với giá trị chuỗi khóa (String-keyed Array)
PHP 8.3 đã mở rộng khả năng array unpacking với các mảng có khóa chuỗi. Trước đây, chỉ có mảng với khóa số nguyên (integer) mới có thể được unpack, nhưng bây giờ bạn có thể unpack cả mảng có khóa chuỗi.
$array1 = ['name' => 'John'];
$array2 = ['age' => 30];
$mergedArray = [...$array1, ...$array2];
print_r($mergedArray);Kết quả:
Array
(
[name] => John
[age] => 30
)8. Cải tiến cú pháp và chức năng
Bên cạnh các tính năng lớn, PHP 8.3 còn mang đến nhiều cải tiến nhỏ về cú pháp và chức năng như:
- Support for Typed Class Properties in Traits: Thuộc tính kiểu trong traits giờ đã được hỗ trợ.
- New
json_validate()Function: Cung cấp một hàm mới để xác thực tính hợp lệ của JSON mà không cần phải giải mã nó. - Date and Time Improvements: Một số hàm mới giúp xử lý thời gian và ngày tháng hiệu quả hơn.
9. Truy xuất hằng số dynamic
class Foo
{
const BAR = 'bar';
}
$name = 'BAR';
Foo::{$name};10. Hàm mb_str_pad
Có thể xem bài viết chi tiết và các ví dụ về hàm mb_str_pad()ở đây.
11. Ngoài ra PHP 8.3 cũng loại bỏ một số hàm
Vui lòng xem chi tiết ở bày viết này: Deprecations in PHP 8.3: Những thay đổi bạn cần biết.
Kết luận
PHP 8.3 là một bản phát hành đầy hứa hẹn với nhiều tính năng và cải tiến giúp lập trình viên làm việc hiệu quả hơn. Các tính năng như Readonly Class, Flexible new(), và JsonErrorException đều là những công cụ mạnh mẽ, đồng thời các cải tiến về hiệu năng và tính ổn định càng làm cho PHP trở thành lựa chọn hấp dẫn cho các dự án lớn nhỏ.
Nếu bạn đang cân nhắc nâng cấp dự án của mình lên PHP 8.3, đây chắc chắn là thời điểm tốt để khám phá những lợi ích mà phiên bản này mang lại!
Tác giả: CodeTutHub Team
Bài viết được đăng tải trên codetuthub.com - Nền tảng học lập trình và chia sẻ kiến thức hàng đầu cho lập trình viên.








