亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Rumah pembangunan bahagian belakang tutorial php PHP Master | Penjana dalam PHP

PHP Master | Penjana dalam PHP

Feb 23, 2025 am 09:12 AM

PHP Master | Generators in PHP

mata teras

    PHP Generator menyediakan cara mudah untuk melaksanakan iterator tanpa memerlukan antara muka Iterator yang kompleks, tetapi sebaliknya gunakan kata kunci
  • dan bukannya yield untuk menyelamatkan keadaannya dan terus dari gangguan apabila dipanggil semula. return
  • Penjana sangat menjimatkan ingatan apabila bekerja dengan dataset yang besar, kerana mereka hanya perlu memperuntukkan memori untuk hasil semasa, tanpa menyimpan semua nilai dalam ingatan sekaligus seperti array.
  • Walaupun penjana berfungsi seperti iterator, ia pada dasarnya merupakan fungsi yang mengembalikan dan menerima nilai luaran dengan memanggil kaedah
  • objek penjana. Ia juga boleh digunakan dalam penjana lain, yang dipanggil perwakilan penjana. send()
Jika anda mengikuti artikel terdahulu saya mengenai iterators, anda akan tahu bahawa lelaran adalah konsep pengaturcaraan yang penting, tetapi melaksanakan antara muka yang diperlukan untuk membuat objek yang boleh dimakan adalah masalah yang terbaik kerana ia memerlukan banyak kod boilerplate. Dengan pembebasan PHP 5.5, kami akhirnya mempunyai penjana! Dalam artikel ini, kita akan belajar tentang penjana, yang menyediakan cara mudah untuk melaksanakan pengaliran mudah tanpa overhead atau kerumitan antara muka iterator.

bagaimana penjana berfungsi

Menurut definisi Wikipedia, penjana adalah "sangat mirip dengan fungsi yang mengembalikan array, kerana penjana mempunyai parameter yang boleh dipanggil dan menghasilkan satu siri nilai". Penjana pada dasarnya adalah fungsi biasa, tetapi bukannya mengembalikan nilai, ia menghasilkan seberapa banyak nilai yang diperlukan. Ia kelihatan seperti fungsi, tetapi berkelakuan seperti iterator. Penjana menggunakan kata kunci

dan bukannya yield. Ia berfungsi sama dengan return kerana ia mengembalikan nilai kepada pemanggil fungsi, tetapi return tidak mengeluarkan fungsi dari timbunan, tetapi menjimatkan keadaannya. Ini membolehkan fungsi untuk meneruskan pelaksanaan dari gangguan. Malah, anda tidak boleh mengembalikan nilai dari penjana, walaupun anda boleh menamatkan pelaksanaannya dengan yield tanpa nilai. Manual PHP menyatakan: "Apabila fungsi penjana dipanggil, ia mengembalikan objek yang boleh diulang." Apabila anda melangkah ke atas objek, PHP memanggil penjana setiap kali nilai diperlukan. Apabila penjana menjana nilai, keadaan disimpan supaya ia dapat dipulihkan apabila nilai seterusnya diperlukan. return

<?php
function nums() {
    echo "The generator has started\n";
    for ($i = 0; $i < 5; $i++) {
        yield $i;
        echo "Yielded $i\n";
    }
    echo "The generator has ended\n";
}

foreach (nums() as $v);
?>
output kod di atas akan menjadi:

<code>The generator has started
Yielded 0
Yielded 1
Yielded 2
Yielded 3
Yielded 4
The generator has ended</code>

Penjana pertama kami

Generator bukan konsep baru. Berikut adalah contoh python:

yield

mari kita menulis semula contoh penjana python dalam PHP. (Perhatikan bahawa kedua -dua coretan kod ini melakukan apa -apa pemeriksaan ralat.)
def file_lines(filename):
    file = open(filename)
    for line in file:
        yield line
    file.close()

for line in file_lines('somefile'):
    #do some work here
<?php
function nums() {
    echo "The generator has started\n";
    for ($i = 0; $i < 5; $i++) {
        yield $i;
        echo "Yielded $i\n";
    }
    echo "The generator has ended\n";
}

foreach (nums() as $v);
?>

Fungsi penjana membuka fail dan kemudian menghasilkan setiap baris fail yang diperlukan. Setiap kali penjana dipanggil, ia terus dilaksanakan dari gangguan. Ia tidak bermula dari awal kerana apabila pernyataan yield dilaksanakan, keadaannya disimpan. Sebaik sahaja semua baris dibaca, penjana hanya tamat dan gelung berakhir.

Kunci kembali

PHP Iterator terdiri daripada pasangan kunci/nilai. Dalam contoh kami, hanya satu nilai yang dikembalikan, jadi kunci adalah nombor (secara lalai kekunci adalah nombor). Jika anda ingin mengembalikan pasangan yang berkaitan, hanya ubah pernyataan yield untuk memasukkan kunci menggunakan sintaks array.

<code>The generator has started
Yielded 0
Yielded 1
Yielded 2
Yielded 3
Yielded 4
The generator has ended</code>

Nilai suntikan

yield bukan sahaja mengembalikan nilai; ia juga boleh menerima nilai luaran. Ini dilakukan dengan memanggil kaedah send() objek penjana dengan nilai yang anda mahu lulus. Nilai ini kemudiannya boleh digunakan untuk mengira atau melaksanakan operasi lain. Kaedah ini menghantar nilai sebagai hasil ungkapan yield kepada penjana dan meneruskan pelaksanaan.

def file_lines(filename):
    file = open(filename)
    for line in file:
        yield line
    file.close()

for line in file_lines('somefile'):
    #do some work here

output akan:

<?php
function file_lines($filename) {
    $file = fopen($filename, 'r');
    while (($line = fgets($file)) !== false) {
        yield $line;
    }
    fclose($file);
}

foreach (file_lines('somefile') as $line) {
    // do some work here
}
?>

Simpan Memori Menggunakan Penjana

Penjana berguna apabila anda mengira koleksi besar dan tidak mahu memperuntukkan memori untuk semua hasil pada masa yang sama, atau apabila anda tidak tahu sama ada semua keputusan diperlukan. Oleh kerana hasilnya diproses, penggunaan memori dapat dikurangkan ke tahap yang sangat rendah dengan memperuntukkan memori hanya untuk hasil semasa. Bayangkan fungsi file(), yang mengembalikan semua baris dalam fail sebagai array. Jalankan penanda aras mudah untuk fungsi file() dan fungsi demo file_lines() kami, masing-masing menggunakan fail teks 100 segmen rawak yang sama yang dijana menggunakan Lipsum, dan hasilnya menunjukkan bahawa fungsi file menggunakan paling banyak penjana 110 kali

<?php
function file_lines($filename) {
    // ...
        yield $key => $line;
    // ...
}

foreach (file_lines('somefile') as $key => $line) {
    // do some work here
}
?>

Kesimpulan

Dengan pengenalan penjana, PHP menyediakan pemaju dengan alat yang berkuasa. Kita kini boleh menulis Iterator dengan cepat sambil menyimpan banyak ingatan. Melalui tutorial ini, saya harap anda mendapat pengetahuan yang cukup untuk mula menggunakannya dalam projek anda. Secara peribadi, saya telah memikirkan banyak objek untuk menulis semula. Sekiranya anda mempunyai idea atau komen, sila tinggalkan komen anda.

FAQs untuk penjana php

(Soalan Lazim yang disenaraikan dalam teks asal hendaklah disertakan di sini, dan disebabkan oleh batasan ruang, ia ditinggalkan di sini.)

Atas ialah kandungan terperinci PHP Master | Penjana dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

php regex untuk kekuatan kata laluan php regex untuk kekuatan kata laluan Jul 03, 2025 am 10:33 AM

Untuk menentukan kekuatan kata laluan, perlu menggabungkan pemprosesan biasa dan logik. Keperluan asas termasuk: 1. Panjang tidak kurang daripada 8 digit; 2. Sekurang -kurangnya mengandungi huruf kecil, huruf besar, dan nombor; 3. Sekatan watak khas boleh ditambah; Dari segi aspek lanjutan, duplikasi berterusan aksara dan urutan tambahan/penurunan perlu dielakkan, yang memerlukan pengesanan fungsi PHP; Pada masa yang sama, senarai hitam harus diperkenalkan untuk menapis kata laluan lemah yang biasa seperti kata laluan dan 123456; Akhirnya, disyorkan untuk menggabungkan perpustakaan ZXCVBN untuk meningkatkan ketepatan penilaian.

Skop pembolehubah PHP dijelaskan Skop pembolehubah PHP dijelaskan Jul 17, 2025 am 04:16 AM

Masalah dan penyelesaian biasa untuk skop pembolehubah PHP termasuk: 1. Pembolehubah global tidak dapat diakses dalam fungsi, dan ia perlu diluluskan menggunakan kata kunci atau parameter global; 2. Pembolehubah statik diisytiharkan dengan statik, dan ia hanya dimulakan sekali dan nilai dikekalkan antara pelbagai panggilan; 3. Pembolehubah hyperglobal seperti $ _get dan $ _post boleh digunakan secara langsung dalam mana -mana skop, tetapi anda perlu memberi perhatian kepada penapisan yang selamat; 4. Fungsi Anonymous perlu memperkenalkan pembolehubah skop induk melalui kata kunci penggunaan, dan apabila mengubah suai pembolehubah luaran, anda perlu lulus rujukan. Menguasai peraturan ini boleh membantu mengelakkan kesilapan dan meningkatkan kestabilan kod.

Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Bagaimana cara mengendalikan fail memuat naik dengan selamat di PHP? Jul 08, 2025 am 02:37 AM

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Mengulas kod dalam php Mengulas kod dalam php Jul 18, 2025 am 04:57 AM

Terdapat tiga kaedah umum untuk kod komen PHP: 1. Use // atau # untuk menyekat satu baris kod, dan disyorkan untuk menggunakan //; 2. Gunakan /.../ untuk membungkus blok kod dengan pelbagai baris, yang tidak boleh bersarang tetapi boleh diseberang; 3. Komen -komen kemahiran gabungan seperti menggunakan / jika () {} / untuk mengawal blok logik, atau untuk meningkatkan kecekapan dengan kunci pintasan editor, anda harus memberi perhatian kepada simbol penutupan dan mengelakkan bersarang apabila menggunakannya.

Bagaimana penjana berfungsi dalam php? Bagaimana penjana berfungsi dalam php? Jul 11, 2025 am 03:12 AM

Ageneratorinphpisamemory-efficientwaytoiterateOverlargedatasetsbyieldingvaluesonateatimeNsteadofreturningthemallatonce.1.GeneratorSuseTheyEldeyWorderWorderToProducevaluuesondemand,

Petua untuk menulis komen php Petua untuk menulis komen php Jul 18, 2025 am 04:51 AM

Kunci untuk menulis komen PHP adalah untuk menjelaskan tujuan dan spesifikasi. Komen harus menjelaskan "mengapa" dan bukannya "apa yang dilakukan", mengelakkan redundansi atau terlalu kesederhanaan. 1. Gunakan format bersatu, seperti docblock (/*/) untuk deskripsi kelas dan kaedah untuk meningkatkan keserasian dan keserasian alat; 2. Menekankan sebab -sebab di sebalik logik, seperti mengapa JS melompat perlu dikeluarkan secara manual; 3. Tambahkan gambaran keseluruhan gambaran sebelum kod kompleks, terangkan proses dalam langkah -langkah, dan membantu memahami idea keseluruhan; 4. Gunakan Todo dan Fixme secara rasional untuk menandakan item dan masalah untuk memudahkan penjejakan dan kerjasama berikutnya. Anotasi yang baik dapat mengurangkan kos komunikasi dan meningkatkan kecekapan penyelenggaraan kod.

Tutorial pemasangan php cepat Tutorial pemasangan php cepat Jul 18, 2025 am 04:52 AM

Toinstallphpquickly, usexampponwindowsorhomeBrewonmacos.1.onwindows, downloadandInstallxampp, selectcomponents, startapache, andplaceFilesinhtdocs.2.alternative, secara manualstallphpfromphp.netandsheBerver.3

Belajar PHP: Panduan Pemula Belajar PHP: Panduan Pemula Jul 18, 2025 am 04:54 AM

Tolearnphpeffectively, startbysettingupalocalverenvironmentusingToolsLikexamppandaCodeDitorLikevscode.1) InstallXamppforapa Che, MySql, danPhp.2) UseAcodeeditorForsyntaxSupport.3) testyoursetupwithasimplephpfile.next, learnphpbasicsincludingvariables, ech

See all articles