1--TEST-- 2Observer: Generator with manual traversal 3--EXTENSIONS-- 4zend_test 5--INI-- 6zend_test.observer.enabled=1 7zend_test.observer.observe_all=1 8zend_test.observer.show_return_value=1 9--FILE-- 10<?php 11function fooResults() { 12 echo 'Starting generator' . PHP_EOL; 13 $i = 0; 14 while (true) { 15 if (yield $i++) break; 16 } 17} 18 19function doSomething() { 20 $generator = fooResults(); 21 22 while($generator->current() !== NULL) { 23 echo $generator->current() . PHP_EOL; 24 if ($generator->current() === 5) { 25 $generator->send('Boop'); 26 } 27 $generator->next(); 28 } 29 30 return 'Done'; 31} 32 33echo doSomething() . PHP_EOL; 34?> 35--EXPECTF-- 36<!-- init '%s' --> 37<file '%s'> 38 <!-- init doSomething() --> 39 <doSomething> 40 <!-- init Generator::current() --> 41 <Generator::current> 42 <!-- init fooResults() --> 43 <fooResults> 44Starting generator 45 </fooResults:0> 46 </Generator::current:0> 47 <Generator::current> 48 </Generator::current:0> 490 50 <Generator::current> 51 </Generator::current:0> 52 <!-- init Generator::next() --> 53 <Generator::next> 54 <fooResults> 55 </fooResults:1> 56 </Generator::next:NULL> 57 <Generator::current> 58 </Generator::current:1> 59 <Generator::current> 60 </Generator::current:1> 611 62 <Generator::current> 63 </Generator::current:1> 64 <Generator::next> 65 <fooResults> 66 </fooResults:2> 67 </Generator::next:NULL> 68 <Generator::current> 69 </Generator::current:2> 70 <Generator::current> 71 </Generator::current:2> 722 73 <Generator::current> 74 </Generator::current:2> 75 <Generator::next> 76 <fooResults> 77 </fooResults:3> 78 </Generator::next:NULL> 79 <Generator::current> 80 </Generator::current:3> 81 <Generator::current> 82 </Generator::current:3> 833 84 <Generator::current> 85 </Generator::current:3> 86 <Generator::next> 87 <fooResults> 88 </fooResults:4> 89 </Generator::next:NULL> 90 <Generator::current> 91 </Generator::current:4> 92 <Generator::current> 93 </Generator::current:4> 944 95 <Generator::current> 96 </Generator::current:4> 97 <Generator::next> 98 <fooResults> 99 </fooResults:5> 100 </Generator::next:NULL> 101 <Generator::current> 102 </Generator::current:5> 103 <Generator::current> 104 </Generator::current:5> 1055 106 <Generator::current> 107 </Generator::current:5> 108 <!-- init Generator::send() --> 109 <Generator::send> 110 <fooResults> 111 </fooResults:NULL> 112 </Generator::send:NULL> 113 <Generator::next> 114 </Generator::next:NULL> 115 <Generator::current> 116 </Generator::current:NULL> 117 </doSomething:'Done'> 118Done 119</file '%s'> 120