Rumah >tajuk utama >Tidak pernah berhenti untuk bergerak ke hadapan, PHP8.1 membawa 8 perubahan baharu yang penting!

Tidak pernah berhenti untuk bergerak ke hadapan, PHP8.1 membawa 8 perubahan baharu yang penting!

藏色散人
藏色散人asal
2021-11-10 16:21:014541semak imbas

"php ialah bahasa terbaik di dunia", ia tidak pernah berhenti bergerak ke hadapan! Pasukan PHP pada masa ini telah mengeluarkan versi PHP 8.1.0 RC 5, dan versi seterusnya akan menjadi calon keluaran keenam dan terakhir (RC 6), yang akan dikeluarkan dalam masa terdekat. Biar saya perkenalkan kepada anda 8 perubahan baharu yang penting dalam PHP8.1, mari kita lihat dahulu!

1, Enums

enum Status
{
    case draft;
    case published;
    case archived;
    
    public function color(): string
    {
        return match($this) 
        {
            Status::draft => 'grey',   
            Status::published => 'green',   
            Status::archived => 'red',   
        };
    }
}

2, Sifat baca sahaja

class PostData
{
    public function __construct(
        public readonly string $title,
        public readonly string $author,
        public readonly string $body,
        public readonly DateTimeImmutable $createdAt,
        public readonly PostState $state,
    ) {}
}

3 Baharu dalam pemula

class PostStateMachine
{
    public function __construct(
        private State $state = new Draft(),
    ) {
    }
}

4 >Fibers, a.k.a. "benang hijau")

$fiber = new Fiber(function (): void {
    $valueAfterResuming = Fiber::suspend('after suspending');
    
    // … 
});
 
$valueAfterSuspending = $fiber->start();
 
$fiber->resume('after resuming');

5, Pembukaan tatasusunan juga menyokong kekunci rentetan (Pembukaan tatasusunan juga menyokong kekunci rentetan)

$array1 = ["a" => 1];
$array2 = ["b" => 2];
$array = ["a" => 0, ...$array1, ...$array2];
var_dump($array); // ["a" => 1, "b" => 2]

6, Pemanggil kelas pertama

function foo(int $a, int $b) { /* … */ }
$foo = foo(...);
$foo(a: 1, b: 2);

7, Jenis persimpangan tulen

function generateSlug(HasTitle&HasId $post) {
    return strtolower($post->getTitle()) . $post->getId();
}

8、Fungsi array_is_list baharu)

$list = ["a", "b", "c"];
array_is_list($list); // true
$notAList = [1 => "a", 2 => "b", 3 => "c"];
array_is_list($notAList); // false
$alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"];
array_is_list($alsoNotAList); // false
Artikel ini ialah terjemahan, alamat asal: https://stitcher.io/blog/php-81-in-8 -kod-blok

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn