Re: semicolon terminator for switch cases

From: Date: Thu, 26 Mar 2020 22:04:34 +0000
Subject: Re: semicolon terminator for switch cases
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-109363@lists.php.net to get a copy of this message
> Le 26 mars 2020 à 19:37, Ilija Tovilo <ilija.tovilo@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. —Claude

« previous php.internals (#109363) next »