Hướng dẫn php fiber vs generator - php sợi so với máy phát điện

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 ShowShow

  • 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.

Nội dung chính

1. Enumerations.

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

Nếu như các bạn đã từng sử dụng các ngôn ngữ khác như:

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

function acceptStatus[Status $status] {...}
4,
enum Status
{
    case Draft;
    case Published;
    case Archived;
}

function acceptStatus[Status $status] {...}
5,... thì chắc hẳn các bạn cũng biết đến
enum Status
{
    case Draft;
    case Published;
    case Archived;
}

function acceptStatus[Status $status] {...}
6 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í.: PHP < 8.1

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

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

VD: PHP < 8.1

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

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

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

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

function acceptStatus[Status $status] {...}
6 như sau:

2. Readonly Properties.

3. First-class Callable.

4. Initializers.

5. Pure Intersection Type.: định nghĩa thuộc tính

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

function acceptStatus[Status $status] {...}
9 là readonly.

class BlogData
{
    public readonly Status $status;
}

6. Nerver return type.

class BlogData
{
    public readonly Status $status;

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

3. First-class Callable.

4. Initializers.

5. Pure Intersection Type.: Đố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

6. Nerver return type.

Bài Viết Liên Quan

Chủ Đề