PHP 8.4 sắp ra mắt và trong bài viết này, chúng ta hãy xem những gì đã được công bố cho đến nay và những tính năng mới nào bạn có thể mong đợi.
Khi nào PHP 8.4 dự kiến sẽ được phát hành?
PHP 8.4 dự kiến sẽ được phát hành vào ngày 21 tháng 11 năm 2024. Trước khi phát hành, nó sẽ trải qua 6 tháng các giai đoạn phát hành trước bao gồm Alpha, Beta, Release Candidates, và sau đó là phát hành chính thức.
Chức năng Tìm Mảng Mới
PHP 8.4 sẽ đi kèm với các chức năng tìm mảng mới bao gồm:
array_find()
array_find_key()
array_any()
array_all()
Xem bài viết của chúng tôi về các chức năng PHP 8.4 Array Find Functions.
PHP Property Hooks
Property hooks được lấy cảm hứng từ các ngôn ngữ như Kotlin, C#, và Swift, và cú pháp bao gồm hai biến thể cú pháp giống như các closure ngắn và nhiều dòng.
class User implements Named
{
private bool $isModified = false;
public function __construct(
private string $first,
private string $last
) {}
public string $fullName {
// Override the "read" action with arbitrary logic.
get => $this->first . " " . $this->last;
// Override the "write" action with arbitrary logic.
set {
[$this->first, $this->last] = explode(' ', $value, 2);
$this->isModified = true;
}
}
}
Property hooks sẽ giúp loại bỏ những đoạn mã lặp lại trong các phương thức getter và setter của thuộc tính, cho phép một thuộc tính định nghĩa việc truy cập và cập nhật thông qua các hooks.
Xem bài viết của chúng tôi để biết thêm chi tiết: Property Hooks trong PHP 8.4.
new MyClass()->method() không cần dấu ngoặc đơn
Kể từ khi quyền truy cập thành viên trong quá trình khởi tạo được giới thiệu, bạn phải bao bọc lệnh gọi new MyClass()
trong dấu ngoặc đơn, nếu không sẽ gặp lỗi cú pháp. Cú pháp đề xuất sẽ cho phép bạn truy cập các hằng số, thuộc tính, và phương thức mà không cần thêm dấu ngoặc đơn:
// Wrapping parentheses are required to access class members
$request = (new Request())->withMethod('GET')->withUri('/hello-world');
// PHP Parse error (<= PHP 8.3): syntax error, unexpected token "->"
$request = new Request()->withMethod('GET')->withUri('/hello-world');
Bản cập nhật này khắc phục lỗi nhỏ khiến việc làm việc với quyền truy cập thành viên của lớp trở nên đơn giản hơn, không cần phải thêm dấu ngoặc đơn bao quanh hoặc sử dụng phương thức khởi tạo tĩnh. Thay đổi cú pháp này cũng giúp PHP phù hợp hơn với các ngôn ngữ C khác như Java, C#, và TypeScript, những ngôn ngữ không yêu cầu dấu ngoặc đơn bao quanh.
Xem bài viết của chúng tôi để biết thêm chi tiết: Class Instantiation Without Extra Parenthesis in PHP 8.4.
Tạo DateTime từ Unix Timestamp
Việc tạo đối tượng DateTime
từ một dấu thời gian Unix sẽ trở nên tiện lợi hơn trong PHP 8.4 với phương thức mới createFromTimestamp()
. Phương thức này sẽ hỗ trợ cả dấu thời gian Unix thông thường cũng như các dấu thời gian chứa microgiây.
$dt = DateTimeImmutable::createFromTimestamp(1718337072);
$dt->format('Y-m-d'); // 2024-06-14
$dt = DateTimeImmutable::createFromTimestamp(1718337072.432);
$dt->format('Y-m-d h:i:s.u'); // 2024-06-14 03:51:12.432000
Trong các phiên bản trước của PHP, có một số cách để tạo một đối tượng DateTime
từ dấu thời gian, chẳng hạn như phương thức createFromFormat()
:
$dt = DateTimeImmutable::createFromFormat('U', (string) 1718337072);
// DateTimeImmutable @1718337072 {#7948
// date: 2024-06-14 03:51:12.0 +00:00,
// }
$dt = DateTimeImmutable::createFromFormat('U.u', (string) 1718337072.432);
// DateTimeImmutable @1718337072 {#7950
// date: 2024-06-14 03:51:12.432 +00:00,
// }
mb_ functions
PHP đã có các hàm trim
, ltrim
, rtrim
, ucfirst
, và lcfirst
từ lâu, và giờ đây, trong PHP 8.4, nó thêm hỗ trợ chuỗi đa byte với các hàm mb_
:
mb_trim
mb_ltrim
mb_rtrim
mb_ucfirst
mb_lcfirst
Các hàm này đều nhận các đối số giống như các hàm gốc.
Xem thêm
Bạn có thể theo dõi các Nhiệm vụ Chuẩn bị cho PHP 8.4 trên wiki.