The problem is that first class callables actually makes a new object wrapper for each reference, so trim(…) != trim(…). (It can be true in some cases, it depends if the memory is freed for the first reference).
pwdisswordfishy•4d ago
And how is Closure::fromCallable('trim') recommended by the article any better in that respect?
It is not better, this is a problem with the first-class callable syntax altogether.
nilslindemann•5d ago
Stop using languages where strings are callable :-p
pwdisswordfishy•4d ago
I think the point of introducing the (...) syntax that for some reason this article apparently denigrates (if I even understand it correctly) is to eventually deprecate that.
pwdisswordfishy•5d ago
> The introduction of first-class callables simplifies callback handling. You no longer have an excuse to define your callbacks like this:
> <?php
> $data = array_map(trim(...), [' x', 'z ']);
“First-class callables” is that exact syntax.
donatj•5d ago
My experience is with modern annotations, callable and iterable are pretty powerful, convenient, and safe.
- https://phpstan.org/writing-php-code/phpdoc-types#callables
- https://phpstan.org/writing-php-code/phpdoc-types#iterables
joe_hoyle•5d ago
pwdisswordfishy•4d ago
joe_hoyle•4d ago