3v4l.org

run code in 300+ PHP versions simultaneously
<?php function mutate($value, Generator $mutator) { while ($mutator->valid()) { try { $fn = $mutator->current(); $value = $fn($value); $mutator->send($value); } catch (Exception $e) { $mutator->throw($e); } } return $value; } $mutations = [ function ($n) { return $n + 1; }, function ($n) { return $n + 2; }, function ($n) { return $n + 3; }, function ($n) { return $n + 4; }, ]; function debuggingMutator(array $mutations) { foreach ($mutations as $mutation) { $result = (yield $mutation); echo "Result: {$result}\n"; } } $result = mutate(0, debuggingMutator($mutations)); var_dump($result);

preferences:
41.77 ms | 402 KiB | 5 Q