On 26.03.2020 at 23:04, Claude Pache wrote: >> Le 26 mars 2020 à 19:37, Ilija Tovilo <ilija.tov...@me.com> a écrit : >> >> What's the reasoning behind this? I find it weird an inconsistent. > > This is a manifestly a leftover of an old syntax. Take a look at the PHP/FI 2 > manual: > > Language constructs: > https://www.php.net/manual/phpfi2.php#lang > <https://www.php.net/manual/phpfi2.php#lang> > > > ``` > <? > if($a==5 && $b!=0 ); > $c = 100 + $a / $b; > endif; > > > ``` > > and, in particular, switch construct: > https://www.php.net/manual/phpfi2.php#switch > <https://www.php.net/manual/phpfi2.php#switch> > > ``` > <? > $a=0; > switch($a) { > case 1; > echo "a is 1"; > break; > case "hello"; > echo "a is hello"; > break; > default; > echo "a is unknown"; > break; > } > > > ``` > > Note that every line of code, including `if (...);` and `case...;`, is > consistently terminated by a semicolon. > > In a subsequent major version, the syntax was modified, and you would use a > colon instead of a semicolon in a number of places, as you can write today: > > ``` > <?php > if ($a==5 && $b!=0): > $c = 100 + $a / $b; > endif; > > > ``` > > Although the old `if (true);` syntax has been removed (probably because of > ambiguity or difficulty of parsing), the old `case 1;` syntax could be left > without issue.
Interesting! Thanks for digging this out. :) -- Christoph M. Becker -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php