Generatorda hozirgi faylda faqat bitta ob'ekt bo'lishi qanday amalga oshiriladi?
sobes.tech AI
AIdan javob
PHP-da Generator (Generator) bir iterator sifatida amalga oshirilgan bo'lib, bu funktsiyaning bajarilishini to'xtatish va keyinchalik davom ettirish imkonini beradi. foreach siklida ishlatilganda, u har qanday vaqtda faqat bitta Generator ob'ekti bilan ishlaydi. Har safar yield chaqirilganda, funksiya o'z holatini (mahalliy o'zgaruvchilar, bajarilish joyi) "eslaydi" va qiymatni qaytaradi, bu iteratsiya elementini yaratadi. foreach siklining keyingi iteratsiyasida, funksiya to'xtatilgan joydan davom etadi. Aslida, Generator ob'ekti holatli ob'ekt bo'lib, u iteratsiya holatini boshqaradi.
<?php
function myGenerator() {
yield 1; // Funksiya to'xtatiladi va 1 ni qaytaradi
echo "1 dan keyingi davom\n";
yield 2; // Funksiya to'xtatiladi va 2 ni qaytaradi
echo "2 dan keyingi davom\n";
yield 3; // Funksiya to'xtatiladi va 3 ni qaytaradi
}
$generator = myGenerator(); // Bir Generator ob'ekti yaratiladi
foreach ($generator as $value) {
echo "Olingan qiymat: " . $value . "\n";
}
// Har qanday vaqtda, $generator o'zgaruvchisi Generator turidagi ob'ektni o'z ichiga oladi.
// Bu, yaratilgan qiymatlar bo'yicha iteratsiya jarayonini boshqaradi.
?>
Shunday qilib, yagona Generator ob'ekti holat va qadam-baqadam ma'lumot olish logikasini inkapsulyatsiya qiladi, bu esa katta ma'lumotlar to'plamini to'liq xotiraga yuklamasdan ishlash imkonini beradi.