Re: RFC: Support Closures in constant expressions
| From: | Tim Düsterhus | Date: | Wed, 30 Oct 2024 08:01:30 +0000 |
| Subject: | Re: RFC: Support Closures in constant expressions | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-125875@lists.php.net to get a copy of this message | ||
Hi
Am 2024-10-30 05:25, schrieb Larry Garfield:
This seems like a good idea to me. My only real question is why we need to forbid short-closures. I fully agree that capturing variables for such functions doesn't work. What I don't understand is why that precludes short-closures. Is it not possible to "just" say "there's nothing to even capture in this context, don't try"? (There may be technical reasons for that, but I do not know what they are and the RFC doesn't say.)It would indeed require some special handling to disable the auto-capturing in the code. This would be solvable of course, but there's also semantic ambiguity, because users reasonably expect short closures to perform auto-capturing:
<?php
$foo = 'foo';
const Closure = static fn (array $bar): array => [$foo, $bar];
var_dump((Closure)('bar'));
If this would be legal syntax: What would you expect to be printed?
Best regards
Tim Düsterhus