Sobes.tech
Middle+

Mevcut dosyada yalnızca bir nesne olduğunu jeneratörde nasıl gerçekleştiriyorsunuz?

sobes.tech yapay zeka

AI'dan gelen yanıt

PHP'deki Generator (Generator), bir fonksiyonun yürütülmesini duraklatıp daha sonra devam etmesine izin veren bir yineleyici (iterator) olarak uygulanır. foreach döngüsünde kullanıldığında, herhangi bir zamanda sadece bir Generator nesnesi ile çalışır. Her yield çağrısında, fonksiyon durumu (yerel değişkenler, yürütme konumu) "hatırlar" ve bir değer döndürür, böylece yinelemenin bir öğesini üretir. foreach döngüsünün bir sonraki yinelemesinde, fonksiyon durduğu yerden devam eder. Aslında, Generator nesnesi, yineleme durumunu yöneten durumlu (stateful) bir nesnedir.

<?php

function myGenerator() {
    yield 1; // Fonksiyon duraklar ve 1 döndürür
    echo "Devam ediyor 1'den sonra\n";
    yield 2; // Fonksiyon duraklar ve 2 döndürür
    echo "Devam ediyor 2'den sonra\n";
    yield 3; // Fonksiyon duraklar ve 3 döndürür
}

$generator = myGenerator(); // Bir Generator nesnesi oluşturulur

foreach ($generator as $value) {
    echo "Alınan değer: " . $value . "\n";
}

// Her zaman, $generator değişkeni bir Generator nesnesi içerir.
// Bu, üretilen değerler üzerinde yineleme sürecini kontrol eder.

?>

Dolayısıyla, tek bir Generator nesnesi, durumu ve adım adım veri alma mantığını kapsüller, bu da potansiyel olarak büyük veri kümelerini tam olarak belleğe yüklemeden işlemeye olanak tanır.