On Mon, Nov 4, 2024, at 6:06 AM, Tim Düsterhus wrote:
> Hi
>
> Am 2024-10-31 07:16, schrieb Larry Garfield:
>> Hm.  It would never occur to me to use a function for a non-class 
>> constant in the first place, so I don't know. :-)  Frankly I can't 
>> recall the last time I used a non-class constant period. :-)
>> 
>> That said, PHP consts are already a bit squishy, and auto-capture is 
>> always by value.  That wouldn't give us a loophole?
>
> Here's another brainteaser:
>
>      function foo(
>          string $bar,
>          Closure $baz = static fn () => $bar,
>      ) {
>          var_dump($baz());
>      }
>
>      foo('captured');
>
> What would you expect the semantics of that script to be?

My expectation is that it's confusing, and therefore we should simply disallow 
it.  Which roughly translates to detecting if a closure tries to use an unbound 
variable statically.  Which is probably more difficult than I make it sound. :-)

>> If it cannot reasonably be done now, but is possible, that should be 
>> listed in future scope with roughly what it would take for a follow-up 
>> to do.  (And then we can argue if it should just be done now, with more 
>> information as to how much work that is.)
>
> I have added an entry to the “Future Scope” section. See also my reply 
> to Alex.
>
> Best regards
> Tim Düsterhus

Thanks.  Can you include what the implementation challenges are for the 
future-scope items, to explain why they're being punted to later rather than 
addressed now?  (As there seems clear interest in having all of them.)

--Larry Garfield

Reply via email to