str_contains, str_starts_with, str_ends_with
PHP 8 giới thiệu các hàm tiện lợi cho thao tác chuỗi:
<?php
if (str_contains($title, 'Manga')) { ... }
if (str_starts_with($slug, 'init-')) { ... }
if (str_ends_with($file, '.jpg')) { ... }
Nhờ đó code trở nên ngắn gọn, dễ đọc hơn hẳn so với cách cũ phải dùng strpos() hoặc substr(). Nhưng vì PHP 7.4 không có, plugin/theme vẫn phải fallback:
<?php
if (strpos($title, 'Manga') !== false) { ... }
Nullsafe operator (?->)
Thay vì check null lặp đi lặp lại, PHP 8 cho phép viết ngắn gọn:
<?php
$username = $user?->profile?->name;
Trên PHP 7.4, dev vẫn phải dùng nhiều if hoặc ternary để tránh error “Trying to get property of non-object”.
Union Types
PHP 8 hỗ trợ union types cho type hint:
<?php
function setOption(int|string $value) { ... }
Rất hữu ích khi function chấp nhận nhiều loại dữ liệu. Nhưng với PHP 7.4, dev phải viết docblock và kiểm tra thủ công:
<?php
/**
* @param int|string $value
*/
function setOption($value) { ... }
Match expression
PHP 8 có match, thay thế cho switch-case dài dòng:
<?php
$status = match($code) {
200 => 'OK',
404 => 'Not Found',
default => 'Unknown',
};
Nhưng trong PHP 7.4, chỉ có switch truyền thống, verbose hơn và dễ gây bug khi quên break.
Attributes (Annotations)
PHP 8 hỗ trợ attributes ngay trong code thay vì phải dựa vào docblock:
<?php
#[Route("/manga/{id}")]
function showManga($id) { ... }
Trong WordPress, đây có thể mở ra cách định nghĩa meta data hoặc API endpoint gọn gàng hơn. Nhưng với PHP 7.4, dev vẫn phải dùng comment + reflection.
Constructor property promotion
PHP 8 cho phép khai báo property trực tiếp trong constructor:
<?php
class Manga {
public function __construct(
private string $title,
private string $author,
) {}
}
Trên PHP 7.4, dev phải lặp lại property + assign thủ công, verbose hơn rất nhiều.
JIT (Just-In-Time)
Dù JIT chưa mang lại nhiều lợi ích cho WordPress, nhưng với các plugin xử lý tính toán nặng (AI, recommendation, image processing), PHP 8 JIT mở ra tiềm năng hiệu năng vượt trội. Đây cũng là một tính năng mà dev WordPress chưa thể khai thác hết khi còn phải support PHP 7.4.
Kết luận
PHP 8+ có rất nhiều tính năng hiện đại giúp code ngắn gọn, rõ ràng và an toàn hơn. Nhưng vì WordPress ecosystem vẫn còn nặng tính backward compatibility, phần lớn plugin/theme (kể cả những plugin lớn) buộc phải support PHP 7.4, đồng nghĩa với việc không thể áp dụng các tính năng này. Đây là cái giá phải trả để đảm bảo số lượng user lớn nhất có thể. Tương lai, khi PHP 7.4 thực sự biến mất khỏi hosting mainstream và WordPress core nâng version tối thiểu, các dev mới có thể thoải mái “bung lụa” với PHP 8+.
Bình luận