Not only are labeled breaks more readable, they are far more maintainable, especially when nested. With break NUM, you have to change the NUMs every time you change the nesting. I've shot myself in the foot several times that way. Just my two cents as a long-time PHP user Dave
Hannes Magnusson said: > IMO labeld breaks are *alot* more readable then break NUM; On 11/30/05, Dmitry Stogov <[EMAIL PROTECTED]> wrote: > Hi Sara, > > This "break LABEL" construct does exactly the same as "break NUM", > > Also I don't like syntax for loops that you suggested. > I prefer "LABEL: while(1) {...}" instead of while LABEL (1) {...}". > > This construct has logic and make sense, but I am not sure that we should > incrise complication of PHP compiler without any serious benefits. > Readability is the only one benefit of this patch. > > May be I missed something? I didn't look into patch deep. > > Thanks. Dmitry. > > > -----Original Message----- > > From: Sara Golemon [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, November 30, 2005 4:41 AM > > To: internals@lists.php.net > > Subject: [PHP-DEV] Labeled Break (nothing at all whatsoever > > to do with GOTO) > > > > > > But first, this word from our sponsor: > > Group A wants anything resembling goto to burn in the fires > > of hell Group B wants full non-crippled goto or nothing at > > all Group C wants partial goto (non-backward jumping) or > > nothing at all Groups B and C both (generally) want it called > > either GOTO or JUMP, not BREAK > > > > Since no group this size will ever come to an agreement on > > something this divisive, I'd like to turn the topic to a > > completely different language feature which (might) please > > enough people to get a rousing consensus. > > > > Actual labeled breaks. Not the break+jump that was proposed > > earlier in the guise of a break statement, but an actual > > straightforward, no funny-business labeled break which does > > no more and no less than the current break N; construct, but > > allows the use of identifier labels rather than numbers which > > may change as the result of the addition or removal of break > > containers. > > > > http://libssh2.org/patches/true_labeled_break.diff > > > > Usage: > > > > while FOO ($condition) { > > /* statements */ > > break FOO; > > /* more statements */ > > } > > > > Or a stacked example: > > > > for FOO(;;) { > > while BAR (true) { > > foreach BAZ ($arr as $val) { > > switch Foof ($value) { > > default: > > do Plop { > > break FOO; > > } while (false); > > } > > } > > } > > } > > > > Notes on this implementation: > > > > * Labels can't be repeated in an ancestral line. For > > example, the parser will throw an ERROR on the following: > > while FOO(true) { > > while FOO(true) { > > break FOO; > > } > > } > > > > * Labels can be repeated by siblings. I'm not married to > > this, and it certainly has WTF potential. This behavior is > > easily modified to throw an error. I left it permissable > > because there was no technical reason to disallow it. For > > example, the following is okay: while FOO(true) { > > break; > > } > > while FOO(true) { > > break FOO; > > } > > > > * Labeled breaks also apply to continue; For example: > > foreach FOO($arr as $key => $val) { > > if ($key % 2) continue FOO; > > if (empty(%key)) break FOO; > > } > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php