Re: [RFC] Auto-capture multi-line closures andshortfunctions take 2
| From: | Olle Härstedt | Date: | Thu, 25 Mar 2021 14:38:40 +0000 |
| Subject: | Re: [RFC] Auto-capture multi-line closures andshortfunctions take 2 | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-113772@lists.php.net to get a copy of this message | ||
2021-03-25 15:23 GMT+01:00, Christian Schneider <cschneid@cschneid.com>:
> Am 25.03.2021 um 14:29 schrieb Mark Randall <marandall@php.net>:
>> On 25/03/2021 09:28, Rowan Tommins wrote:
>>> That's not quite what I meant. I meant that you can't say "capture by
>>> default, but this variable is definitely local".
>>
>> I think if there's one argument against, this would be it, but IMHO it is
>> a weakness in PHP as a whole.
>
> I'm not sure if I misunderstand what you're saying but to me it is one of
> the greatest things about PHP that everything is local by default (minus a
> narrow set of well-known and easily enough recognizable things).
>
>> The solution would be adding JS-like let / const statements. Which would
>> be a benefit to other things too.
>
>
> I disagree that this is the solution. I think JS had to add var and later
> let because of the unfortunate decision to have C-like scoping rules.
> Making scoping in PHP more complex to be able to repeat this mistake in some
> form seems ill-advised to me.
>
> - Chris
You could make the change that *all* variables are now block-scoped,
not function-scoped. That would make auto-capture less dangerous, but
I don't know how much code it would break.