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.