Re: [VOTE] let construct (Block Scoping)
| From: | HwapX | Date: | Thu, 22 Jan 2026 15:37:56 +0000 |
| Subject: | Re: [VOTE] let construct (Block Scoping) | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-129854@lists.php.net to get a copy of this message | ||
On Thu, Jan 22, 2026, 12:12 Rowan Tommins [IMSoP] <imsop.php@rwec.co.uk>
wrote:
> On 22/01/2026 09:12, Tim Düsterhus wrote:
> > Hi
> >
> > we just opened the vote on the “let construct (Block Scoping)” RFC
> > (which was originally proposed as “use construct”, but the keyword
> > changed as a result of the discussion).
>
>
> I have voted No.
>
> I really want block scoping as a feature in PHP, but I do not want this
> syntax.
>
>
> For those who didn't follow the discussion thread, I will try to
> summarise my reasons:
>
> - I don't think PHP is special enough to break with a strong tradition
> here. A huge family of languages use roughly the same syntax for
> variable declarations, even though they have very different details of
> how they work. That includes C and Java, but also JS and Perl, and even
> VisualBasic (all ultimately traceable to ALGOL).
>
> - Users are likely to be coming from those related languages,
> particularly JS, and are likely to be confused by how this syntax works.
>
> - For instance, they would not expect a comma-separated list to be
> equivalent to a set of nested blocks, which affects the behaviour of
> cases like let($a=new Foo, $a=new Bar)
>
> - The use cases for combining with "if" or "foreach" are interesting,
> but the result is confusing - the important control flow keyword ends up
> in the middle of the line.
>
> - For other use cases, requiring an extra block adds noise. For
> instance, if we ever add auto-capture closures, a JS-style a concise
> block-scoped declaration would be very useful to avoid accidental capture..
>
>
> PHP itself already has "ALGOL-style" declarations, for "const",
> "global", and "static". I think adding a "let" or "var"
> keyword with the
> same syntax would be more consistent, and more useful.
>
> There would be details to work out, but dozens of other languages to
> learn from.
>
>
> My thanks to Seifeddine and Tim for their work on this, and to Tim in
> particular for patient and respectful discussion.
>
>
> --
> Rowan Tommins
> [IMSoP]
>
I agree, the proposed syntax and nested block hell are terrible!
The traditional syntax with implicit and invisible nested block are much
better, many languages and years of trusting proved that.
>