Sobes.tech
Middle+

Чӣ тавр дар генератор иҷро мешавад, ки дар файли ҳозира танҳо як объект мавҷуд аст?

sobes.tech AI

Ҷавоб аз AI

Женератор (Generator) дар PHP амалӣ шудааст ҳамчун итератор, ки имкон медиҳад иҷрои функсияро боздорад ва баъдан дубора оғоз кунад. Вақте ки дар давраи foreach истифода мешавад, бо як объект Generator дар ҳар лаҳза кор мекунад. Ҳар вақте ки yield даъват мешавад, функсия "ҳатто" ҳолати худро (вариаблҳои маҳаллӣ, ҷойи иҷро) ёд мекунад ва арзишро бармегардонад, ки унсури итерасияро тавлид мекунад. Дар давоми итерасияи ояндаи foreach, функсия аз ҷое, ки истода буд, идома медиҳад. Дар асл, объект Generator як объект бо ҳолат аст, ки ҳолати итерасияро идора мекунад.

<?php

function myGenerator() {
    yield 1; // Функсия боздошта мешавад ва 1-ро бармегардонад
    echo "Идома пас аз 1\n";
    yield 2; // Функсия боздошта мешавад ва 2-ро бармегардонад
    echo "Идома пас аз 2\n";
    yield 3; // Функсия боздошта мешавад ва 3-ро бармегардонад
}

$generator = myGenerator(); // Як объект Generator эҷод мешавад

foreach ($generator as $value) {
    echo "Арзиши гирифташуда: " . $value . "\n";
}

// Дар ҳар лаҳза, тағйирёбандаи $generator объект аз навъи Generator-ро дорад.
// Ин равандро дар бораи итератсия дар арзишҳои тавлидшуда назорат мекунад.

?>

Аз ин рӯ, як объект Generator ягона ҳолат ва логикаи гирифтани маълумотро дар бар мегирад, ки имкон медиҳад кор бо маҷмӯъҳои бузурги маълумотро бе пурра бор кардан дар хотира, анҷом диҳад.