However hated, goto is useful. When we say "useful" we don't mean "it should be used all the time" but that there are certain situations when it comes in handy.



There are times when you need a logical structure like this:

<?php

do {



$answer = checkFirstSource ();

if( seemsGood ( $answer )) break;



$answer = readFromAnotherSource ();

if( seemsGood ( $answer )) break;



}while( 0 );

$answer = applyFinalTouches ( $answer );

return $answer ;

?>



In this case, you certainly implemented a goto with a "fake loop pattern". It could be a lot more readable with a goto; unless, of course, you hate it. But the logic is clear: try everything you can to get $answer, and whenever it seems good (e.g. not empty), jump happily to the point where you format it and give it back to the caller. It's a proper implementation of a simple fallback mechanism.



Basically, the fight against goto is just a side effect of a misleading article many decades ago. Those monsters are gone now. Feel free to use it when you know what you're doing.