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