> Le 24 juin 2021 à 18:02, Larry Garfield <la...@garfieldtech.com> a écrit :
>
> On Wed, Jun 16, 2021, at 11:16 AM, Larry Garfield wrote:
>> Hi folks. The vote for the Partial Function Application RFC is now
>> open, and will run until 30 June.
>>
>> https://wiki.php.net/rfc/partial_function_application
>>
>> Of particular note, a few people had asked about using ...? instead of
>> ... for the variadic placeholder. In the end we decided not to explore
>> that, as Nikita explained off-list it was actually more confusing, not
>> less, as it would suggest "placeholder for a variadic" rather than "a
>> placeholder that is variadic." Otherwise, it's just more typing. The
>> syntax choices section of the RFC has been updated accordingly.
>
> Since some people still don't grok the use cases, I've written a blog post to
> make the case for them better than a detail-oriented RFC can.
>
> https://peakd.com/hive-168588/@crell/the-case-for-partials-and-pipes-in-php
>
> There has also been some positive Twitter chatter, as well as the level of
> +1s on that post (which is, I think, the highest of any PHP post I've had on
> there, ever), so I think the demand for it is definitely there in the
> ecosystem. It's just not people who frequent Internals. :-/
>
> I'd say there are definitely people that want to use partials.
>
> --Larry Garfield
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
>
Hi,
In the blog post, you are not fair when comparing:
```
Request::fromGlobals()
|> normalize_path(?)
|> oauth_check(?)
|> parse_body($dbconn, ?)
|> $resolver->resolveController(?)
|> controller_caller(?)
|> response_handler(?, $theme_system)
|> $add_cache_headers(?)
|> send_response(?)
;
```
with:
```
Request::fromGlobals()
|> fn(ServerRequestInterface $request): ServerRequestInterface =>
normalize_path($request)
|> fn(ServerRequestInterface $request): ServerRequestInterface =>
oauth_check($request)
|> fn(ServerRequestInterface $request): ServerRequestInterface =>
parse_body($dbconn, $request)
|> fn(ServerRequestInterface $request): ServerRequestInterface =>
$resolver->resolveController($request)
|> fn(ServerRequestInterface $request): ResponseInterface =>
controller_caller($request)
|> fn(ResponseInterface $response): ResponseInterface =>
response_handler($response, $theme_system)
|> fn(ResponseInterface $response): ResponseInterface =>
$add_cache_headers($response)
|> fn(ResponseInterface $response): ResponseInterface =>
send_response($response)
;
```
I would write it the following way:
```
Request::fromGlobals()
|> fn($_) => normalize_path($_)
|> fn($_) => oauth_check($_)
|> fn($_) => parse_body($dbconn, $_)
|> fn($_) => $resolver->resolveController($_)
|> fn($_) => controller_caller($_)
|> fn($_) => response_handler($_, $theme_system)
|> fn($_) => $add_cache_headers($_)
|> fn($_) => send_response($_)
;
```
The version with partials is still better as it has less grawlix, but the
difference between the two is considerably reduced. Style can make a big
difference in readability.
Also, without pipes or partials, it could be written as:
```
$_ = Request::fromGlobals();
$_ = normalize_path($_);
$_ = oauth_check($_);
$_ = parse_body($dbconn, $_);
$_ = $resolver->resolveController($_);
$_ = controller_caller($_);
$_ = response_handler($_, $theme_system);
$_ = $add_cache_headers($_);
send_response($_);
```
where my `$_`s play the role of your `?`s.
(I still do find that pipes and partials would be nice additions, but it is not
something that I am desperately craving after.)
—Claude
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php