Чӣ тавр дар генератор иҷро мешавад, ки дар файли ҳозира танҳо як объект мавҷуд аст?
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 ягона ҳолат ва логикаи гирифтани маълумотро дар бар мегирад, ки имкон медиҳад кор бо маҷмӯъҳои бузурги маълумотро бе пурра бор кардан дар хотира, анҷом диҳад.