On Wed, Aug 29, 2012 at 10:10 PM, Derick Rethans <der...@php.net> wrote: > On Wed, 29 Aug 2012, Nikita Popov wrote: > >> > function &bind(array $keys, array &$row) >> > { >> > foreach($keys as $key) >> > yield $key => $row[$key]; >> > } >> > >> > $row = []; >> > $it = bind(['a', 'b'], $row); >> > >> > foreach($it as $key => &$ref) >> > echo $key; >> > echo "\n"; >> > foreach($it as $key => &$ref) >> > echo $key; >> >> Thanks, this is now fixed. It'll throw an exception now, saying that >> you can't traverse an already closed generator. > > Nothing in the core throws an exception, why would this?!
To my knowledge all iterator-related functionality is supposed to throw exceptions (as it is a feature related to the object oriented part of PHP). At leas this is what a quick search of the code base gave me. (See http://lxr.php.net/xref/PHP_TRUNK/ext/spl/spl_dllist.c#1248 for example). Nikita -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php