Re: [PHP-DEV] [RFC][DISCUSSION] Language Constructs Syntax Changes

This is only part of a thread. view whole thread
  110972
July 13, 2020 11:08 michal.brzuchalski@gmail.com (=?UTF-8?Q?Micha=C5=82_Marcin_Brzuchalski?=)
Hi Nikita,

pon., 13 lip 2020 o 12:41 Nikita Popov ppv@gmail.com> napisał(a):

> On Sun, Jul 5, 2020 at 9:36 AM Michał Marcin Brzuchalski < > michal.brzuchalski@gmail.com> wrote: > >> Hi internals, >> >> I realise we're tight to the deadline but from my calculations, >> this RFC should fit with 2w discussion and 2w voting before feature >> freeze. >> >> The proposal is to allow two statements to skip parentheses so they don't >> look like expressions. >> This goes to `declare` and `__halt_compiler`. >> Changes have already been implemented and respective PR's are linked to >> the >> RFC. >> >> You can find the RFC at >> https://wiki.php.net/rfc/language-constructs-syntax-changes >> >> There is no BC break! >> Proposed changes only allow certain constructs to be considered valid. >> > > I don't think introducing alternative syntax for declare and halt_compiler > is a good idea. It introduces two ways to write the same thing, without > much benefit I can see. > > Your stated goal is to make it clearer that these aren't functions, but > language constructs. I'm not sure your change helps that much: While > "__halt_compiler()" looks like a function call, "__halt_compiler" looks > like a constant lookup. For the declare syntax, "declare(a = 1)" is already > illegal syntax for functions, even with the parentheses. >
I can agree with "__halt_compiler;" similar to constant lookup, which indeed does not mate it more clear. Regarding the second syntax for "declare" what I wanted to achieve is reduce the number of different syntaxes and we do have quite a few in PHP. I've noticed that the "declare" syntax is quite similar to the const declare if you simply remove parentheses, which therefore IMO increases readability, consider this example: declare strict_types = 1; const GEAR_LIMIT = 5; From parser perspective, these both use const_list and only differ by a first keyword and looks similar and present the same syntax construct. Which currently is not true and they're both presented as a different syntax. By introducing an alternative syntax I planned to deprecate the old as soon as we could potentially do that. I believe it'd be hard until we have ticks directive. Cheers, -- Michał Marcin Brzuchalski
  110973
July 13, 2020 11:33 benas.molis.iml@gmail.com (Benas IML)
Hey Michał,

Personally, I think instead of making `declare(strict_types=1);` to look
more like a constant, we should make it look more like a function.

Since it seems that the named parameters RFC is going to be accepted, I
think allowing for alternative `declare(strict_types: 1);` syntax would
make much more sense.

Best regards,
Benas


On Mon, Jul 13, 2020, 2:08 PM Michał Marcin Brzuchalski <
michal.brzuchalski@gmail.com> wrote:

> Hi Nikita, > > pon., 13 lip 2020 o 12:41 Nikita Popov ppv@gmail.com> napisał(a): > > > On Sun, Jul 5, 2020 at 9:36 AM Michał Marcin Brzuchalski < > > michal.brzuchalski@gmail.com> wrote: > > > >> Hi internals, > >> > >> I realise we're tight to the deadline but from my calculations, > >> this RFC should fit with 2w discussion and 2w voting before feature > >> freeze. > >> > >> The proposal is to allow two statements to skip parentheses so they > don't > >> look like expressions. > >> This goes to `declare` and `__halt_compiler`. > >> Changes have already been implemented and respective PR's are linked to > >> the > >> RFC. > >> > >> You can find the RFC at > >> https://wiki.php.net/rfc/language-constructs-syntax-changes > >> > >> There is no BC break! > >> Proposed changes only allow certain constructs to be considered valid. > >> > > > > I don't think introducing alternative syntax for declare and > halt_compiler > > is a good idea. It introduces two ways to write the same thing, without > > much benefit I can see. > > > > Your stated goal is to make it clearer that these aren't functions, but > > language constructs. I'm not sure your change helps that much: While > > "__halt_compiler()" looks like a function call, "__halt_compiler" looks > > like a constant lookup. For the declare syntax, "declare(a = 1)" is > already > > illegal syntax for functions, even with the parentheses. > > > > I can agree with "__halt_compiler;" similar to constant lookup, which > indeed does not mate it more clear. > > Regarding the second syntax for "declare" what I wanted to achieve is > reduce the number of different syntaxes and we do have quite a few in PHP.. > I've noticed that the "declare" syntax is quite similar to the const > declare if you simply remove parentheses, > which therefore IMO increases readability, consider this example: > > declare strict_types = 1; > const GEAR_LIMIT = 5; > > From parser perspective, these both use const_list and only differ by a > first keyword and looks similar and present the same syntax construct. > Which currently is not true and they're both presented as a different > syntax. > > By introducing an alternative syntax I planned to deprecate the old as soon > as we could potentially do that. > I believe it'd be hard until we have ticks directive. > > Cheers, > -- > Michał Marcin Brzuchalski >