Re: speaking of control structures...
| From: | Robert Cummings | Date: | Tue, 05 May 2009 18:13:23 +0000 |
| Subject: | Re: speaking of control structures... | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-292296@lists.php.net to get a copy of this message | ||
On Tue, 2009-05-05 at 13:56 -0400, Tom Worster wrote:
> there's a control structure i wish php had: a simple block that you can
> break out of, e.g.
>
> block {
>
> if ( condition )
> break;
>
> blah...
> blah...
>
> if ( another condition )
> break;
>
> blah...
> blah...
>
> etc...
>
> }
>
> the block is just like a loop except that it is executed once only.
>
> this would be a handy structure for writing input validation code. the blah
> blah fragments can be used for opening files, talking to the db,
> manipulating strings, processing dates and times, etc., the conditions for
> testing if the input is unacceptable.
>
> i'm sure many of the programmers here do this kind of thing routinely and
> have their own habits and solutions. i'd be curious what they are. please
> let us know!
>
>
> i guess i ought to go first. it's fugly but it works:
>
> $once = true;
> while ( $once ) {
> $once = false;
>
> stuff using break where needed ...
>
> }
You can do it simpler:
<?php
while( $condition )
{
// stuff using break where needed.
// final break
break;
}
?>
But PHP 5.3 introduces goto:
<?php
header:
if( $something ) ...
goto body;
body:
if( $soemthingElse ) ...
goto footer;
if( $seomthingerElse ) ...
goto footer;
footer:
// blah blah blah
goto done;
done;
?>
Sometimes goto can make your code more succinct AND readable-- Dijkstra
be damned on this point-- All hail Knuth!
And no, I'm not saying this particular example is a good example of when
goto is useful... but it does illustrate not having to contort variables
and logic into a nightmare of complexity and unintuitiveness to satisfy
"Structured Programming" paradigms.
Cheers,
Rob.
--
http://www.interjinn.com
Application and Templating Framework for PHP