Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:109365 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 74267 invoked from network); 27 Mar 2020 00:13:48 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 27 Mar 2020 00:13:48 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 2FEF71804C6 for ; Thu, 26 Mar 2020 15:38:50 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS8560 212.227.0.0/16 X-Spam-Virus: No X-Envelope-From: Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Thu, 26 Mar 2020 15:38:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1585262324; bh=K7LDzjNyWK+WuVWuZuua6YRnAde7a5kbGMRx29QQAGY=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=DmKGWpfBhB7D+awRmLka8WpkPxLonAMvJ8R7JpHAb8rTi436QAULa1eauhi3SvsjR OGJaHtYrs14Dax3qfPEg/JrJwzgj9f/rrj3zN5BZuBybbmG8OPQLYjfJd0NYUp4QOW zCLT/+x22kmaRGmNo6ub9d09x1/HxUTST/mPXI5o= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.2.130] ([84.179.237.201]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N0oFz-1jTdqb17Rt-00woNG; Thu, 26 Mar 2020 23:38:44 +0100 To: Claude Pache , Ilija Tovilo Cc: PHP internals References: Message-ID: <78250c0f-a22a-6ab9-9b8a-8920624e4802@gmx.de> Date: Thu, 26 Mar 2020 23:38:43 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: de-DE Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:52mXahmhgDTuXDV8VZRU/jFDXvG6aBKIgoQP3gyjs1ajjL+CguT 3Xiql9fypmIkvGaUwVVLogYqSdSPq2bjsKix5xzQYcUfnrXrRZB1PSaCb7KeE6gkaBF/Qcw qI5iTjvAQzjchgFpRf7aipPHJgPJkOJvw35kiYRhDG6rvM7il6T3GknBZtiEx3bPTRKXBN7 uAjKH6SpUgHBu0YSGczQw== X-UI-Out-Filterresults: notjunk:1;V03:K0:DDXu4AN6ioU=:8qAiTxpW2zF90t5qLr2QOE JxONuDp9bxlDoaHrAqO5U5c7bx8bDDQ0PE2PR4PFmUSpH+8+OBNVkyd7WqpuN9ghZvjoIHQck lysarU2dk+KRQavtmQiOpCMJ7jnw5f/Z0AXVTCXtrnvom4OsWCbQlQUQm4h8cnoVAcfn3twfw 0rrmWwx8RXgpJ0L7C2ha/QNXue6HxyI87dWHf9v9DWTBrDQliEoqXobE4n/eQ/pXTBE+AdVNa sCk6zOeOFoMLQ/Sn937RxvzQchFFdH7AfSCzOVCdS9tq08L2Et6SRxapIzawpZrBQC4cAm60L 7epZkRVN2DHzY+LMsE7wW5bKcc6q2Mf9g8tQf6p7G3rGDUUUfFWUaBLZdLkgL+H/cRikxYzLE yPXFyTbAmZXyYwtgTiQrDDSTFhOg5g7/Y5RAiEsMhpv82o7swLarzKjAKHyROXDuZedhR8U4T nZdLTSLJOTPWLrNJNfgnxieq8dQCPII+CT5QG7Pqeqbw/GyitH2q8ALpxRA6k43vwBduG3MgB ncsdN63E3779EixZWBqG6XSMNLJKBjIwH6Eg44HVOSs4TZutwxV0y6NAySyAGBtmExzt8LVvj dOmrHrULGy+cE/7fsUuP8JMnM1AlcLpxLOikPvsSl1YGVqXYwFd0EriW/FoU8e0QKOUsj3GnR qEMEFC7ZCffOuq7kIxahII5n3wC+0lrrQztKHoifbEHzaPG2UiQVUcCxvlod4+WD6XiXjyNbr d6QcJcHP52D1+xJjg0ORTTk77pGzhqavalRAz4pihXTMFTasd/5ZYGLvXglw/d98oEwieMdbn pKAwOlEOLesgO+6r7W5n0XASdpDSTXhn5Prlw1uKbgaQlGggGRI63aOoxk9klZj60k7xkLDJg tBCP9GvF18SiwbfKMId7WXJm4JKuTCbw6qNS0OSvL6KDw/HV4lmcBcpcQFxndHOsvtCctzRrR NX2fr7/Y1nqO3xTyc+UoZdW8slg6vQudo8Abx0ElR9+ycKi9XdnwiP2qFaCHAR2/fp5nL5hfT yZAsVYAB3jCJtFXpU65uk+a42w1PGxOsI44QX/qVcLbSru++3ytFLLKzGOhSK05GXXgGx0mgW K+6iuq+hKVfDk31bswM/QfKHRvhGYVvBP+K4gMguLpDHgKTquhZ6X4yk7d4h9iCgSXBfSarnF Zr0JgAtBIa0KCECCAIjdw2vsSsemi1K/4fsk27si56vnNSm9WYAfNWuwjAh/dPcyxAeNMCO7l pagsWN4gnHekzXR0y Subject: Re: [PHP-DEV] semicolon terminator for switch cases From: cmbecker69@gmx.de ("Christoph M. Becker") On 26.03.2020 at 23:04, Claude Pache wrote: >> Le 26 mars 2020 =C3=A0 19:37, Ilija Tovilo a =C3= =A9crit : >> >> 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 > > > ``` > if($a=3D=3D5 && $b!=3D0 ); > $c =3D 100 + $a / $b; > endif; > > > ``` > > and, in particular, switch construct: > https://www.php.net/manual/phpfi2.php#switch > > ``` > $a=3D0; > 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 c= onsistently terminated by a semicolon. > > In a subsequent major version, the syntax was modified, and you would us= e a colon instead of a semicolon in a number of places, as you can write t= oday: > > ``` > if ($a=3D=3D5 && $b!=3D0): > $c =3D 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. :) =2D- Christoph M. Becker