PHP TUTORIALS
Hướng dẫn tạo domain ảo tại localhost với XAMPP trên Window Có gì mới trong PHP 8 (Tính năng, Cải tiến và Trình biên dịch JIT) Hướng dẫn viết ứng dụng kiểm tra năm sinh theo âm lịch bằng PHP Xử lý realtime trong PHP sử dụng pusher Hướng dẫn gửi mail trong PHP với PHPMailer Bóc tách dữ liệu từ trang khác bằng PHP Simple HTML DOM Parser Cách sửa lỗi hình ảnh khi đăng bài viết lên Facebook Hướng dẫn tạo thông báo realtime với pushcrew Kích thước chuẩn và cách làm FavIcon icon Tìm hiểu bản chất vòng lặp foreach trong php Những vấn đề nâng cao kỹ năng lập trình trong php Sử Dụng Vòng Lặp Xuất Dữ Liệu Bảng Tính Lương Tìm hiểu thuật toán phân trang trong php Giới hạn số trang trong thuật toán phân trang Bài 01: Đệ quy menu đa cấp với php và mysql - phần 1 Bài 02: Đệ quy menu đa cấp với php và mysql - phần 2 Tích hợp bộ search google vào website Nên dùng count() hay sizeof() để đếm số phần tử của mảng Bài 01: Lấy dữ liệu từ mysql lưu vào file excel với PHPExcel Tạo slug tự động bằng JavaScript và PHP RSS là gì? Cách Tạo RSS cho Website PHP CMS là gì? Các CMS phổ biến hiện nay (update 2021) Web động là gì? Web tĩnh là gì? Chặn referrer từ website simple-share-buttons.com Bảng mã ASCII chuẩn các hệ nhị phân - thập phân - thập lục phân Hướng dẫn tạo Facebook App để lấy App ID và Secret Key Mối liên hệ giữa HTML - PHP - MYSQL Tự động post bài viết lên tường với hootsuite.com Kiểm tra người dùng đã đăng nhập hay chưa bằng PHP Lấy video kênh Youtube mới nhất bằng jQuery và Youtube API V3 Đệ quy chuyên mục đa cấp trong PHP toàn tập Font Awesome là gì? Cách sử dụng Font Awesome Tích hợp đăng nhập Google vào Website Thuật toán phân trang với PHP và MySQL Cài đặt LAMP trên Fedora
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Có gì mới trong PHP 8 (Tính năng, Cải tiến và Trình biên dịch JIT)

[PHP 8] dự kiến sẽ được phát hành vào tháng 12 năm 2020 và sẽ mang lại cho chúng ta một loạt các tính năng mạnh mẽ và cải tiến tuyệt vời.

Vì PHP 8 vẫn đang được phát triển nên chúng ta chỉ có thể dự đoán một số thay đổi trước khi bản chính thức được công bố. Mình sẽ theo dõi những thay đổi và liên tục cập nhật nó vào bài viết này.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Còn bạn thì sao? Bạn đang sử dụng ngôn ngữ PHP thì mong muốn gì ở PHP 8? Hãy cùng mình đi sâu vào nhé.

php 8 png

PHP JIT (Trình biên dịch Just in Time)

Tính năng được mong đợi nhất ở lần cập nhật này. Vậy JIT là gì?

PHP JIT được thực hiện gần như độc lập, nó có thể được bật / tắt vào lúc biên dịch mã code PHP. Khi được bật, mã PHP được lưu trữ trong một vùng nhớ cache và sẽ được chạy khi có yêu cầu.

Nói một cách ngắn gọn thì JIT sẽ giúp PHP biên dịch nhanh hơn, đây là điều mà các lập trình viên mong muốn nhất ở bất kì một ngôn ngữ lập trình nào.

Thuộc tính trong Class

Với PHP7 trở về trước thì chúng ta phải khai báo các thuộc tính một cách rõ ràng. Trong hàm khởi tạo constructor nếu muốn gắn giá trị lúc khởi tạo thì cũng phải chỉ định một cách cụ thể. Xem ví dụ sau:

class Point {
    public int $x;
    public int $y;
    public int $z;

    public function __construct(
        int $x = 0,
        int $y = 0,
        int $z = 0,
    ) {
        $this->x = $x;
        $this->y = $y;
        $this->z = $z;
    }
}

Đoạn code này quả nhiên rất dài dòng, vì vậy theo ông Nikita Popov (tác giả của RFC) tiết lộ sẽ rút gọn lại cách khai báo các tham số bằng cách đặt trong các tham số ở hàm khởi tạo luôn. Cụ thể như ví dụ trên sẽ được viết lại như sau:

class Point {
    public function __construct(
        public int $x = 0,
        public int $y = 0,
        public int $z = 0,
    ) {}
}

Tuy nhiên theo cá nhân mình thấy viết cách này đúng là rất ngắn gọn, nhưng sẽ khó nhìn và kiểm soát tham số hơn cho lập trình viên. Nhưng nếu code quen thì cũng có thể chấp nhận được vì nó quá tiện.

Inheritance

Chúng ta thường nói rằng mối quan hệ giữa lớp cha và lớp con có liên kết chặt chẽ với nhau, từ các hàm cho đến các tham số truyền vào trong hàm. Tuy nhiên với PHP 8 thì điều này không còn nữa.

Ví dụ sau đây sẽ được biểu diễn ở PHP 8.

class Test {
    public function __construct(
        public int $x = 0
    ) {}
}

class Child extends Test {
    public function __construct(
        $x, 
        public int $y = 0,
        public int $z = 0,
    ) {
        parent::__construct($x);
    }
}

Abstract Constructors

Khai báo thuộc tính ngay hàm khởi tạo sẽ không được chấp nhận ở classes và interfaces.

abstract class Test {
    // Lỗi: Abstract constructor.
    abstract public function __construct(private $x);
}
 
interface Test {
    // Lỗi: Abstract constructor.
    public function __construct(private $x);
}

Nullability

Trước đây ta có thể gán giá trị Null cho bất kì một biến nào. Tuy nhiên với PHP 8 thì bạn phải chỉ định biến đó là có thể null hay không.

class Test {
    // Sai: Sử dụng null mặc định trong thuộc tính không thể null
    public function __construct(public Type $prop = null) {}

    // Đúng: Chỉ định rõ ràng là có thể null
    public function __construct(public ?Type $prop = null) {}
}

Loại bỏ từ khóa var

Với PHP 5 trở về trước thì từ khóa var rất thông dụng, nó dùng để khai báo thuộc tính trong lớp. Tuy nhiên, với một ngôn ngữ đang dần nâng cấp như PHP thì cách tạo thuộc tính này không tường minh, vì vậy ta phải chỉ mức độ truy cập của biến bằng các từ khóa như public, private.

class Test {
    // Error: Không hỗ trợ từ khóa "var".
    public function __construct(var $prop) {}
}

Tên thuộc tính khong được trùng lặp

Trước đây bạn có thể khai báo trùng lặp thuộc tính trong lớp. Tuy nhiên với PHP 8 thì điều đó là không được.

class Test {
    public string $prop;
    public int $explicitProp;

    // Đúng
    public function __construct(public int $promotedProp, int $arg) {
        $this->explicitProp = $arg;
    }

    // Lỗi: Thuộc tính $prop bị khai báo 2 lần.
    public function __construct(public string $prop) {}
}

Còn nhiều tính năng nữa, mình sẽ cập nhật trong thời gian sớm nhất!

Lời kết

Trên là một vài tính năng cơ bản sẽ được cập nhật ở phiên bản PHP 8. Vì chưa release nên những dự đoán này mình đã cập nhật từ các trang nước ngoài. Hy vọng đến cuối năm 2020 chúng ta sẽ được trải nghiệm những tính năng tuyệt vời của PHP 8.

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top