Rumah > pembangunan bahagian belakang > tutorial php > PHP8.1 memperkenalkan penambahbaikan kepada Penjana

PHP8.1 memperkenalkan penambahbaikan kepada Penjana

WBOY
Lepaskan: 2023-07-08 06:00:01
asal
1108 orang telah melayarinya

PHP8.1 memperkenalkan penambahbaikan kepada Penjana

Penjana ialah ciri berkuasa yang diperkenalkan dalam PHP 5.5, yang menyediakan cara yang lebih cekap untuk melaksanakan iterator. Dalam versi PHP 8.1, Penjana telah menjalani beberapa penambahbaikan penting, membawa lebih banyak kemudahan dan fleksibiliti kepada pembangun. Dalam artikel ini, kami meneroka penambahbaikan ini dan menggambarkan penggunaannya dengan contoh kod.

1. Kembalikan nama kunci dan nilai kunci

Dalam versi sebelum PHP 8.1, Penjana hanya boleh mengembalikan nilai kunci atau hanya nama kunci. Ini mungkin tidak cukup fleksibel dalam sesetengah senario aplikasi, dan kaedah lain perlu digunakan untuk mencapai keperluan untuk mengembalikan nama kunci dan nilai kunci pada masa yang sama. Dalam PHP 8.1, kita boleh menggunakan hasil baharu sebagai sintaks untuk mendapatkan kedua-dua nama kunci dan nilai kunci. Berikut ialah contoh:

function myGenerator()
{
    yield 'a' => 1;
    yield 'b' => 2;
    yield 'c' => 3;
}

$generator = myGenerator();

foreach ($generator as $key => $value) {
    echo "$key => $value" . PHP_EOL;
}
Salin selepas log masuk

Jalankan kod di atas, anda akan mendapat output berikut:

a => 1
b => 2
c => 3
Salin selepas log masuk

Melalui hasil sebagai sintaks, kita boleh mendapatkan nama kunci dan nilai kunci pada masa yang sama apabila melintasi iterator, yang sangat bertambah baik kesederhanaan dan kebolehbacaan kod.

2. Pemanasan penjana

Dalam versi sebelum PHP 8.1, apabila kami mencipta objek Penjana, ia akan memulakan pelaksanaan serta-merta dan tidak boleh dijeda. Dalam sesetengah kes, kami ingin melakukan beberapa operasi memanaskan badan sebelum benar-benar mula menggunakan objek Generator.

Dalam PHP 8.1, kaedah baharu bernama send() telah ditambahkan untuk memulakan objek Generator dan menjeda pelaksanaannya. Kita boleh melakukan kerja permulaan yang diperlukan sebelum objek penjana dimulakan, dan kemudian gunakan kaedah send() untuk menyambung semula pelaksanaan penjana apabila diperlukan. Berikut ialah contoh:

function myGenerator()
{
    $data = yield; // 等待 send() 方法的传值
    yield $data;
}

$generator = myGenerator();

$generator->send(123);

foreach ($generator as $value) {
    echo $value . PHP_EOL;
}
Salin selepas log masuk

Jalankan kod di atas, anda akan mendapat output berikut:

123
Salin selepas log masuk

Dengan menggunakan kaedah send(), lulus parameter sebelum objek penjana dimulakan, kita boleh membuat perubahan yang diperlukan semasa pelaksanaan operasi penjana untuk meningkatkan fleksibiliti dan skalabiliti kod.

3. Padanan longgar jenis parameter

Sebelum PHP 8.1, jika jenis nama kunci dan nilai kunci penjana tidak betul-betul sepadan dengan jenis pembolehubah gelung foreach, ralat jenis yang ketat akan berlaku. Dalam PHP 8.1, pemadanan santai jenis parameter telah diperkenalkan, dan ralat tidak akan dilemparkan lagi apabila jenis boleh dihantar.

Berikut ialah contoh:

function myGenerator()
{
    yield 1 => 'a';
    yield 2 => 'b';
    yield 3 => 'c';
}

$generator = myGenerator();

foreach ($generator as $index => $letter) {
    echo $index . ' => ' . $letter . PHP_EOL;
}
Salin selepas log masuk

Jalankan kod di atas, anda akan mendapat output berikut:

1 => a
2 => b
3 => c
Salin selepas log masuk

Seperti yang anda lihat, nama kunci penjana ialah integer, tetapi jenis pembolehubah gelung foreach ialah rentetan. Dalam PHP 8.1, keadaan ini tidak lagi melaporkan ralat, tetapi akan melakukan penukaran jenis dan mengeluarkan hasil seperti biasa.

Ringkasan:

Peningkatan kepada Penjana yang diperkenalkan dalam PHP 8.1 menyediakan pembangun dengan lebih fleksibiliti dan kemudahan. Kita boleh menggunakan hasil sebagai sintaks untuk mendapatkan kedua-dua nama kunci dan nilai kunci, melaksanakan operasi prapemanasan penjana melalui kaedah send() dan secara longgar memadankan jenis parameter apabila jenis tidak sepadan dengan tepat. Penambahbaikan ini menjadikan Penjana lebih berkuasa dan lebih mudah digunakan dalam aplikasi praktikal.

Di atas adalah penambahbaikan dan kod contoh Penjana yang diperkenalkan dalam PHP 8.1. Saya harap artikel ini membantu anda memahami dan menggunakan Penjana.

Atas ialah kandungan terperinci PHP8.1 memperkenalkan penambahbaikan kepada Penjana. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan