PHP 7.4 là một phiên bản nâng cấp quan trọng trong dòng PHP 7, mang đến nhiều cải tiến về cú pháp, hiệu suất và khả năng bảo trì mã nguồn. Với tốc độ xử lý nhanh hơn, cú pháp rõ ràng hơn và nhiều tính năng mới, PHP 7.4 giúp lập trình viên phát triển ứng dụng web hiệu quả và hiện đại hơn. Trong bài viết này, mình sẽ cùng bạn khám phá những điểm nổi bật của PHP 7.4, từ tính năng mới đến các thành phần đã bị loại bỏ.
Những điểm chính
- PHP 7.4 có ý nghĩa như thế nào: Hiểu được vai trò của PHP 7.4 trong quá trình cải tiến hiệu năng, nâng cao khả năng bảo trì mã nguồn và chuẩn bị cho PHP 8.
- PHP 7.4 có gì mới: Nắm được các tính năng nổi bật giúp tối ưu cú pháp, cải thiện tốc độ thực thi và hỗ trợ lập trình viên viết mã ngắn gọn, rõ ràng hơn.
- Giới thiệu về PHP 7.4: Deprecations: Biết được những thay đổi về cú pháp có thể ảnh hưởng đến mã cũ, từ đó chủ động cập nhật và tránh lỗi khi nâng cấp.
- Biết thêm Vietnix là nhà cung cấp dịch vụ lưu trữ uy tín, tốc độ cao, hỗ trợ tốt cho các ứng dụng PHP trên nền tảng hiện đại.
- Câu hỏi thường gặp: Tìm hiểu những thắc mắc phổ biến khi làm việc với PHP 7.4 để áp dụng phiên bản này hiệu quả hơn trong thực tế.
PHP 7.4 có ý nghĩa như thế nào?
PHP vẫn không ngừng cải thiện chính mình kể từ khi xuất hiện từ năm 1994. Với bản cập nhật 7.4 ra mắt vào 28/11/2019, PHP đã cung cấp cho người dùng nhiều tính năng mới. Như ở phiên bản thứ 7 của PHP, hiệu năng lẫn tốc độ vẫn được cải thiện đáng kể. Trong đó, tính năng mới thú vị nhất có thể là preload. Nó giúp tăng tốc độ thực thi tập lệnh. Cùng với đó là khả năng đơn giản hóa các dòng code thông thường. Từ đó, các dòng code có thể nhanh hơn và “sạch” hơn đáng kể.
PHP hiện nay được sử dụng trong hơn 78,9% các trang web. Theo W3techs, các trang web nổi tiếng nhất sử dụng PHP gồm có Wikipedia, Pinterest và cả Facebook. Nếu so sánh với phiên bản PHP 5, đáng ngạc nhiên là tốc độ của PHP 7 nhanh hơn đến hai lần. Do đó, các trang web hỗ trợ WordPress chắc chắn có nhiều lợi nhất khi sử dụng PHP phiên bản mới.

Bạn chỉ cần nhìn qua biểu đồ trên cũng có thể thấy ảnh hưởng to lớn của PHP. Cụ thể, 39.191.714 website hiện đang sử dụng PHP. Hơn nữa, PHP 7.4 đã cho ra kết quả thử nghiệm tốt hơn hẳn phiên bản PHP 7.3. Hiệu suất đã được cải thiện, cùng với đó là một số cải tiến khác về trải nghiệm người dùng. Bảng dưới đây cho thấy bài kiểm tra benchmark ở các phiên bản gần đây của PHP. Các tiêu chí được kiểm tra gồm có khả năng dễ sử dụng, tốc độ, hiệu suất,…

Để PHP 7.4 phát huy tối đa hiệu suất và tính ổn định trong môi trường thực tế, việc triển khai trên hạ tầng mạnh mẽ là lựa chọn tiên quyết. Tại Vietnix, dịch vụ VPS Linux được trang bị 100% SSD, hỗ trợ nhiều phiên bản PHP và hệ điều hành linh hoạt, đặc biệt phù hợp với các ứng dụng web hiện đại cần hiệu năng cao. Dù bạn xây dựng hệ thống CMS, API hay các dự án PHP phức tạp, VPS tại Vietnix luôn đáp ứng tốt với cấu hình mạnh, khả năng mở rộng cao và hỗ trợ kỹ thuật chuyên sâu. Trải nghiệm ngay môi trường lưu trữ lý tưởng cho các dự án lập trình PHP của bạn!

Hạ tầng máy chủ an toàn tuyệt đối
KHÁM PHÁ VPS tại Vietnix ngay!
Dịch vụ VPS tại Vietnix đảm bảo tài nguyên độc lập và ổn định cho website hoặc ứng dụng của bạn.
Tham khảo các gói VPS ngay!PHP 7.4 có gì mới?
Kể từ năm 2016, PHP7 bắt đầu phát hành các bản cập nhật đều đặn hàng năm. Mỗi năm là mỗi tính năng, bổ sung mới. Cùng với đó là cải thiện khả năng đọc, viết code. Do đó, PHP ngày càng trở nên tin cậy và thân thiện hơn với người dùng.

Preload
Trước hết, hãy nói sơ về code. Khi sử dụng một framework hay các thư viện, tệp của chúng phải được tải và liên kết trên mỗi request. Preload (tải trước) là khi ta có thể tải các framework và thư viện vào OPCache. Nó cho phép máy chủ tải các tệp PHP, lưu trữ chúng trong bộ nhớ khi khởi động. Hơn nữa, chúng hoàn toàn khả dụng cho bất kỳ request nào sau này. Do đó, các công việc có thể được thực hiện nhanh chóng hơn.
Preload được chạy bởi một chỉ thị php.ini cụ thể: opache.preload. Nó có trình biên dịch script PHP và sẽ thực thi khi máy chủ khởi động. Ngoài ra, nó cũng có thể được sử dụng để preload nhiều tệp hơn, sau đó là tùy chọn biên dịch chúng. Rõ ràng tính năng này rất tuyệt vời. Tuy vậy, nếu nguồn của các file preload bị thay đổi, máy chủ cần được khởi động lại. Các file được preload cũng sẽ được lưu trong bộ nhớ OPCache vĩnh viễn.
Spread Operator trong Array Expressions
Kể từ phiên bản 5.6, PHP đã bắt đầu hỗ trợ argument unpacking (spread operator) (giải nén đối số). Ở phiên bản 7.4, người dùng đã có thể sử dụng tính năng này với biểu thức mảng (array). Argument unpacking là một cú pháp để giải nén các mảng vào list đối số. Hơn nữa, chỉ cần thêm vào trước ba dấu chấm “…”, việc này đã có thể dễ dàng được thực hiện.
Ví dụ:
$animals = ['dog', 'cat'];
$animalkingdom = ['lion', 'elephant', ...$animals, 'giraffe'];
// [‘lion’, ‘elephant’, ‘dog’, ‘cat’, ‘giraffe’];
Sau đó, mảng có thể được mở rộng từ bất kỳ đâu trong một mảng khác. Tất cả chỉ với một cú pháp Spread Operator đơn giản. Ngoài ra, tính năng này cũng có thể được sử dụng ở trong một hàm:
function getNum() {
return ['a', 'b'];
}
$num6 = [...getNum(), 'c']; // ['a', 'b', 'c']
$num7 = [...new NumIterator(['a', 'b', 'c'])]; // ['a', 'b', 'c']
function arrGen() {
for($i = 11; $i < 15; $i++) {
yield $i;
}
}
$num8 = [...arrGen()]; // [11, 12, 13, 14]
Hơn nữa, hiện tại người dùng hoàn toàn có thể extract các array cũng như generator, được một hàm trả về trực tiếp vào một mảng mới.
function getAnimals(){
return ['dog', 'cat', 'elephant'];
}
$num1 = [...getAnimals(), 'lion', 'tiger', 'giraffe'];
Output trong PHP 7.4:
array(6) {
[0]=>
string(3) "dog"
[1]=>
string(3) "cat"
[2]=>
string(8) "elephant"
[3]=>
string(4) "lion"
[4]=>
string(5) "tiger"
[5]=>
string(7) "giraffe"
}
Với biểu thức array mới này, spread operator có hiệu suất cao hơn hẳn array_merge ở bản 7.3. Sở dĩ vì spread operator là một cấu trúc ngôn ngữ. Trong khi đó, array_merge lại là một hàm. Ngoài ra, array_merge chỉ hỗ trợ mảng. Tuy nhiên, bạn cần lưu ý chỉ có thể sử dụng cho các indexed array vì các key => value array không được hỗ trợ. Ngoài ra, PHP 7.4 còn có thể loại bỏ array_merge. Một lợi ích khác của PHP 7.4 là sử dụng hàm generator. Một generator function cơ bản là giống một hàm thông thường. Ngoại trừ việc trả về một giá trị, generator function có thể trả về nhiều giá trị.
function generator() {
for ($i = 3; $i <= 5; $i++) {
yield $i;
}
}
$num1 = [0, 1, 2, ...generator()];
Weak References
Hiện nay, PHP 7.4 đã có WeakReference (khác với WeakRed hay tiện ích mở rộng Weakref). WeakReference cho phép programmer gọi lại một tham chiếu đến một đối tượng. Việc này không ngăn các đối tượng bị hủy. Do đó, nó rất có ích trong việc triển khai các cấu trúc như cache.
Contravariant Parameter và Covariant Return
Hiện tại, PHP sử dụng hầu hết các kiểu tham số bất biến (invariant parameter) cũng như kiểu dữ liệu trả về (return type). Có nghĩa là, nếu một phương thức có tham số hay return type của X, thì tham số subtype hay return type cũng thuộc kiểu X. Với PHP 7.4, nó cho phép covariant (được sắp xếp từ cụ thể đến tổng quan) và contravariant (thứ tự ngược lại) trên tham số và return type.
Ví dụ: Covariant return type:
interface Factory {
function make(): object;
}
class UserFactory implements Factory {
function make(): User;
}
Contravariant parameter type:
interface Concatable {
function concat(Iterator $input);
}
class Collection implements Concatable {
// accepts all iterables, not just Iterator
function concat(iterable $input) {/* . . . */}
}
Typed Properties 2.0
Kể từ PHP5, type hint là một tính năng có sẵn, cho phép chỉ định loại biến dự kiến được truyền cho một hàm hay lớp. Trong quá trình nâng cấp lên PHP 7.2, kiểu dữ liệu đối tượng đã được bổ sung. Từ đó mang lại hy vọng về sự xuất hiện của nó với số lượng lớn hơn trong tương lai. PHP 7.4 hiện nay có thể hỗ trợ các kiểu sau:
bool, int, float, string, array, object, iterable, self, parent
any class or interface name
?type // where "type" may be any of the above
Cần lưu ý rằng kiểu parent có thể được sử dụng trong các lớp. Không cần có tính nhất quán giữa kiểu parent với tham số hay kiểu trả về. Ngoài ra, void và callable cũng không được hỗ trợ vì không còn phù hợp.
Ví dụ về một class, được viết cho PHP 7.3:
class User {
/** @var int $id */
private $id;
/** @var string $name */
private $name;
public function __construct(int $id, string $name) {
$this->id = $id;
$this->name = $name;
}
public function getId(): int {
return $this->id;
}
public function setId(int $id): void {
$this->id = $id;
}
public function getName(): string {
return $this->name;
}
public function setName(string $name): void {
$this->name = $name;
}
}
Arrow Functions 2.0
Anonymous Functions trong PHP tương đối dài dòng, thậm chí đối với những tác vụ đơn giản. Một phần do số lượng lớn của syntactic boilerplate, cũng như nhu cầu nhập biến thủ công. Ở phiên bản PHP 7.3:
function array_values_from_keys($arr, $keys) {
return array_map(function ($x) use ($arr) { return $arr[$x]; }, $keys);
}
Đối với phiên bản 7.4:
function array_values_from_keys($arr, $keys) {
return array_map(fn($x) => $arr[$x], $keys);
}
Hiện nay, arrow function có dạng đơn giản hơn rất nhiều:
fn(parameter_list) => expr
Cú pháp hàm arrow cho phép sử dụng đa dạng các hàm như variadics, default values, parameter hay return types. Ngoài ra còn có by-reference passing và returning. Tuy vậy, code vẫn được đảm bảo dễ đọc và “sạch”. Một điều nữa cần lưu ý, arrow function có quyền ưu tiên hàng thấp nhất. Ví dụ:
fn($x) => $x + $y
// is
fn($x) => ($x + $y)
// not
(fn($x) => $x) + $y
Giới thiệu về PHP 7.4: Deprecations
PHP 7.4 có khá nhiều deprecation – loại bỏ các tính năng hay thành phần cũ.
- Kiểu real
- Magic quotes legacy
- array_key_exists() với đối tượng
- Bộ lọc FILTER_SANITIZE_MAGIC_QUOTES
- Phương pháp reflection export()
- mb_strrpos() với cách encode làm đối số thứ 3
- implode() parameter order mix
- Unbinding $this khỏi non-static closures
- Hàm hebrevc()
- convert_cyr_string()
- Hàm money_format()
- ezmlm_hash()
- Hàm restore_include_path()
- allow_url_include ini directives
Ngoài ra là một vài lưu ý quan trọng khác:
Thay đổi độ ưu tiên của Concatenation Operator
Hiện tại, độ ưu tiên của “.”, “+” và “-” là như nhau. Sự kết hợp của các toán tử này sẽ được xử lý theo thứ tự từ trái sang phải. Tuy nhiên, sang phiên bản PHP 7.4, “.” sẽ được ưu tiên sau. Do đó, cộng và trừ sẽ được thực hiện trước chuỗi.
echo "sum: " . $a + $b;
// would be executed as if the code were as follows.
echo "sum :" . ($a + $b);
Sự thay đổi này nhằm đảm bảo ít lỗi xảy ra hơn. PHP 7.4 hiện là giai đoạn đầu trong việc loại bỏ các toán tử “+”, “-” và “.”. Nhưng dù gì cũng cần tham khảo ý kiến cho những thay đổi của PHP 8 sau này.
Left-Associative Ternary Operator
Khác với các ngôn ngữ khác, toán tử ternary trong PHP thuộc left-associative thay vì right-associative. Việc này không chỉ bất thường, mà còn làm các developer khá bối rối khi chuyển cách code giữa các ngôn ngữ khác nhau.
Lấy ví dụ đoạn code sau:
return $a == 1 ? 'one'
: $a == 2 ? 'two'
: $a == 3 ? 'three'
: $a == 4 ? 'four'
: 'other';
Với hầu hết các ngôn ngữ, nó sẽ được phiên dịch như sau:
return $a == 1 ? 'one'
: ($a == 2 ? 'two'
: ($a == 3 ? 'three'
: ($a == 4 ? 'four'
: 'other')))
Nhưng trong PHP, đó lại là một câu chuyện hoàn toàn khác:
return ((($a == 1 ? 'one'
: $a == 2) ? 'two'
: $a == 3) ? 'three'
: $a == 4) ? 'four'
: 'other';
Dĩ nhiên, sự bất thường này có thể gây ra những lỗi không đáng có. Tuy vậy, PHP 7.4 đang bắt đầu sử dụng dấu ngoặc, với hy vọng giảm thiểu các lỗi trong tương lai.
Vietnix – Nhà cung cấp dịch vụ lưu trữ tốc độ cao
Vietnix là đơn vị cung cấp dịch vụ VPS tốc độ cao, được tối ưu cho hiệu suất nhờ hạ tầng sử dụng 100% ổ cứng SSD. Hệ thống máy chủ mạnh mẽ, cấu hình linh hoạt và khả năng mở rộng dễ dàng giúp người dùng triển khai các ứng dụng PHP – bao gồm cả phiên bản 7.4 – một cách mượt mà và ổn định. Giao diện quản trị thân thiện, hỗ trợ kỹ thuật 24/7 cùng với tính năng sao lưu tự động định kỳ giúp đảm bảo an toàn dữ liệu trong suốt quá trình vận hành. Liên hệ ngay để được tư vấn chi tiết!
Thông tin liên hệ:
- Hotline: 18001093.
- Email: sales@vietnix.com.vn.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Câu hỏi thường gặp
Lập trình viên nên chú ý điều gì khi refactor code cũ sang PHP 7.4?
Khi refactor code sang PHP 7.4, lập trình viên cần chú ý:
– Kiểm tra và cập nhật cú pháp cũ, nhất là toán tử nối chuỗi và ba ngôi.
– Áp dụng tính năng mới như typed properties, arrow functions một cách hợp lý.
– Loại bỏ đoạn mã deprecated để tránh lỗi về sau.
– Viết unit test kỹ trước khi thay đổi, đảm bảo không phá vỡ logic cũ.
– Đồng bộ môi trường phát triển và các công cụ CI/CD theo PHP 7.4.
PHP 7.4 có phù hợp cho các dự án mới khởi chạy không, hay nên dùng PHP 8 trở lên?
PHP 7.4 vẫn dùng được cho dự án mới, nhưng không còn là lựa chọn tối ưu. Nếu môi trường cho phép, nên triển khai PHP 8 trở lên để tận dụng hiệu năng, tính năng mới và thời gian hỗ trợ dài hơn. PHP 7.4 chỉ phù hợp khi hệ thống hoặc thư viện chưa sẵn sàng nâng cấp.
Lời kết
PHP 7.4 không chỉ mang đến hiệu suất cải thiện đáng kể, mà còn giới thiệu nhiều cú pháp mới giúp code gọn gàng và dễ bảo trì hơn. Đồng thời, việc loại bỏ các tính năng lỗi thời cũng là bước chuẩn bị cần thiết cho PHP 8. Nếu bạn đang phát triển ứng dụng bằng PHP, phiên bản 7.4 sẽ giúp dự án hoạt động ổn định, hiện đại và phù hợp hơn với xu hướng phát triển web hiện nay.