Сегодня команда PHP выпустила версию PHP 5.5.0, которая включает поддержку генераторов. Чтение документации, я заметил, что он делает именно то, что он может сделать с массивом.
Пример генератора команд PHP:
// Only PHP 5.5
function gen_one_to_three() {
for ($i = 1; $i <= 3; $i++) {
// Note that $i is preserved between yields.
yield $i;
}
}
$generator = gen_one_to_three();
foreach ($generator as $value) {
echo "$value\n";
}
Результат
1
2
3
Но я могу сделать то же самое, используя массивы. И я все еще могу поддерживать совместимость с более ранними версиями PHP.
Посмотрите:
// Compatible with 4.4.9!
function gen_one_to_three() {
$results = array();
for ($i = 1; $i <= 3; $i++) {
$results[] = $i;
}
return $results;
}
$generator = gen_one_to_three();
foreach ($generator as $value) {
echo "$value\n";
}
Итак, вопрос: в чем заключается цель существования этой новой функции? Я получил все примеры документации без использования новой функции, заменив ее массивом.
Может ли кто-нибудь дать хорошее объяснение и, возможно, пример, который не всегда бывает невозможным для более старых версий, но использование генераторов может помочь в разработке?