note 118235 deleted from control-structures.goto by salathe

From: Date: Mon, 21 Sep 2020 14:43:05 +0000
Subject: note 118235 deleted from control-structures.goto by salathe
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-215288@lists.php.net to get a copy of this message
Note Submitter: D. Kellner ---- 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.

« previous php.notes (#215288) next »