Phiên bản PHP 7.4 có gì mới? (Tính năng, hiệu năng ...)

PHP 7.4 là phiên bản PHP mới nhất được phát hành ngày 28/11/2019. Cùng tham khảo ngay bài viết sau để xem PHP phiên bản 7.4 có gì mới nhé!

Phiên bản PHP 7.4 có gì mới? (Tính năng, hiệu năng ...)

Preloading

Khi dùng framework hoặc library, files được tải lên và link trên mỗi request. Preloading là khi bạn tải framework và libraries vào trong OPCache. Nó giúp server tải file PHP trước và lưu trên bộ nhớ khi khởi động để có sẵn cho bất kỳ request nào tương lai.

Preloading được chạy bằng php.ini với chỉ dẫn: opache.preload. Nó bắt PHP script chạy khi server khởi động. Nó cũng có thể được dùng để tải lên nhiều file khác hoặc chọn để include hay compile chúng. Preloaded files cũng bị nằm trong bộ nhớ OPCache mãi. Những preload files này cũng sẵn sàng dùng cho request tương lai nếu cần sử dụng.

Spread Operator trong Array Expressions

Khi PHP 5.6 phát hành, PHP đã bắt đầu hỗ trợ argument unpacking (spread operator). Còn đối với PHP 7.4 thì chúng ta có thể dùng tính năng này với array expression. Nếu muốn làm vậy, nó chỉ cần dùng  (3 chấm) là được.

Ví dụ:

$arr1 = ['3', '4'];

$arr2 = ['1', '2', ...$arr1, '5'];

// ['1', '2', '3', '4', '5'];

Chúng ta có thể mở rộng array từ mọi nơi trong một array khác, bằng cú pháp Spread Operator.

$num1 = [1, 2, 3];

$num2 = [...$num1]; // [1, 2, 3]

$num3 = [0, ...$num1]; // [0, 1, 2, 3]

$num4 = array(...$num1, ...$num2, 111); // [1, 2, 3, 1, 2, 3, 111]

$num5 = [...$num1, ...$num1]; // [1, 2, 3, 1, 2, 3]

function getNum(){

    return ['1', '2', '3'];

}

$num = [...getNum(), '4', '5', '6'];

// ['1', '2', '3', '4', '5', '6'];

Spread operatos có hiệu năng tốt hơn so với bản 7.3 array_merge. Đó là vì spread operator là ngôn ngữ cấu trúc, trong khi đó array_merge là một hàm. Cũng vì spread operator hỗ trợ objects triển khai ngang còn array_merge chỉ hỗ trợ arrays.

Weak References

PHP 7.4 đã có class WeakReference, bạn không nên nhầm lẫn với class WeakRed và Weakref extension.

WeakReferences giúp programmer gọi tham chiếu tới một object. Nó hữu dụng vì nó không ngăn object bị hủy. Nó hỗ trợ triển khai cache có cấu trúc:

WeakReference {

    /* Methods */

    public __construct ( void )

    public static create ( object $ref ) : WeakReference

    public get ( void ) : ?object

}

Contravariant Parameters và Convariant Returns

Hiện nay, PHP sử dụng hầu hết như invariant parameter types và return types. Có nghĩa là nếu một phương thức có parameter hay return type của X thì subtype parameter hoặc return type cũng phải là loại X.

Bây giờ với PHP 7.4, nó cho phép covariant và contravariant trên parameter và return types.

Ví vụ: return type của covariant:

interface Factory {

    function make(): object;

}

class UserFactory implements Factory {

    function make(): User;

}

Ví dụ contravariant parameter:

interface Concatable {

    function concat(Iterator $input);

}

class Collection implements Concatable {

    function concat(iterable $input) {/* . . . */}

}

Typed Properties 2.0

Từ PHP 5, type hints đã được hỗ trợ, cho phép một loại biến nhất định được chuyển tới hàm hoặc class. Khi nâng cấp lên PHP 7.2 thì datatype object xuất hiện và các loại khác cũng có thể được chờ đón hơn trong tương lai.

Trong phiên bản PHP 7.4 mới, PHP có thể hỗ trợ được những loại sau:

bool, int, float, string, array, object, iterable, self, parent

any class or interface name

?type // kiểu dữ liệu trả về có thể là bất kỳ kiểu nào kể trên

Arrow Functions 2.0

Arrow function đã có dạng đơn giản hơn nhiều:

fn(parameter_list) => expr

Những thứ bị loại bỏ trên PHP 7.4

Dưới đây là một số thứ đã bị loại bỏ trên PHP7.4:
  • Type real
  • Magic quotes legacy
  • Array_key_exists() với objects
  • 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
  • Parameter implode() order mix
  • Unbinding $this khỏi non-static closures
  • Hàm hebrevc()
  • Hàm convert_cyr_string()
  • money_format() function
  • ezmlm_hash() function
  • restore_include_path() function
  • allow_url_include ini directive
Nhìn chung phiên bản PHP 7.4 đã thêm khá nhiều tính năng mới. Bên cạnh đó thì hiệu năng và tốc độ đều đã được cải thiện đáng kể so với PHP 7.3. Trong đó thì tính năng mới nhất là preloading giúp đẩy nhanh tốc độ thực thi script, khiến code gọn gàng hơn, đơn giản hóa những code thông dụng. Bạn có thể trải nghiệm PHP 7.4 ngay hôm nay để đánh giá về hiệu năng của phiên bản này nhé.