Hướng dẫn php fiber

Hôm qua [26/11/2021], PHP 8.1 đã được release với một loạt các tính năng mới như: enum, read only roperty, fibers,... và cải thiệt rất nhiều về mặt hiệu năng.

Nội dung chính

  • 1. Enumerations.
  • 2. Readonly Properties.
  • 3. First-class Callable.
  • 4. Initializers.
  • 5. Pure Intersection Type.
  • 6. Nerver return type.
  • 7. Final class constants.
  • 9. Array unpacking - hỗ trợ mảng bất tuần tự.
  • 10. Cải tiến về mặt hiệu năng.

Nội dung chính

  • 1. Enumerations.
  • 2. Readonly Properties.
  • 3. First-class Callable.
  • 4. Initializers.
  • 5. Pure Intersection Type.
  • 6. Nerver return type.
  • 7. Final class constants.
  • 9. Array unpacking - hỗ trợ mảng bất tuần tự.
  • 10. Cải tiến về mặt hiệu năng.

Bài viết này mình sẽ liệu kê ra một số feature mới nổi bật trong PHP 8.1

1. Enumerations.

Nếu như các bạn đã từng sử dụng các ngôn ngữ khác như: Java, C#,... thì chắc hẳn các bạn cũng biết đến enum rồi.

Enum là một kiểu dữ liệu đặc biệt, enum chứa một tập hợp các hằng số được xác định trước. Thay vì các bạn phải khai báo các const trong class như trước thì bạn có thể khai báo chúng vào một enum cho dễ quản lí.

VD: PHP < 8.1

class Status
{
    const DRAFT = 'draft';
    const PUBLISHED = 'published';
    const ARCHIVED = 'archived';
}

function acceptStatus[string $status] {...}

Giờ đây từ PHP 8.1 trở đi bạn có thể đặt nó trong enum như sau:

enum Status
{
    case Draft;
    case Published;
    case Archived;
}

function acceptStatus[Status $status] {...}

Để hiểu rõ hơn về enum trong PHP các bạn có thể tham khảo tại đây.

2. Readonly Properties.

Ở phiên bản này PHP cung cấp thêm một loại thuộc tính chỉ được phép đọc mà không được phép ghi khi class đã được khởi tạo.

Nếu bạn muốn một thuộc tính chỉ được phép đọc thì chỉ cần thêm keyword readonly vào sau visibility của thuộc tính đó.

VD: định nghĩa thuộc tính $status là readonly.

class BlogData
{
    public readonly Status $status;
}

Gán giá trị cho thuộc tính trong constructor [nếu gán giá trị ngoài phương thức __construct nó sẽ throw ra một Error exception].

class BlogData
{
    public readonly Status $status;

    public function __construct[Status $status]
    {
        $this->status = $status;
    }
}

3. First-class Callable.

Tính năng này cho phép chúng ta tham chiếu đến bất kì một hàm, phương thức nào một cách ngắn gọn. Tính năng này PHP gọi nói là  first-class callable.

VD: Đối với PHP < 8.1

class Foo
{
    public function bar[]: string
    {
        return 'bar method';
    }
}

$bar = [new Foo[], 'bar'];

$bar[]; // bar method

$fn = Closure::fromCallable['strlen'];

$fn["ABC"]; // 3

Giờ đây với PHP 8.1 bạn chỉ việc khai báo ngắn ngọn như sau;

Chủ Đề