PHP 8.5 加入了 pipe 语法

2 天前
 cj323

https://php.watch/versions/8.5/pipe-operator

$result = "Hello World"
    |> strtoupper(...)
    |> str_shuffle(...)
    |> trim(...);

同样语法 JS 那边卡了很久,PHP 直接上了。

4428 次点击
所在节点    PHP
59 条回复
kwokky
2 天前
cool
TerranC
2 天前
好像对于 bcadd bcsub 之类的总算不用一层套一层
newtype0092
2 天前
之前看到了,确实有些地方会方便一些。

有个限制比较难受就是只能用 只有第一个参数是 require 的 callable 。
(A major limitation of the pipe operator is that all the callables in the chain must accept only one required parameter.)

这样的话像最常用的 array_map 之类一通嵌套处理的场景,想用 pipe 的方式还得包在 closure 里。
DOLLOR
2 天前
@guiyumin 当然了,所以很多函数式编程语言都会提供 pipeline operator 来解决套娃问题
wangtian2020
2 天前
JavaScript 你崛起吧
ywcjxf1515
2 天前
chenqh
2 天前
python 居然没有 pipe 这个操作符
w3cll
2 天前
php 的异步也在推进了
https://github.com/true-async/php-async
WorseIsBetter
2 天前
@newtype0092 #43

等这个 RFC 实现了就没问题了: https://wiki.php.net/rfc/partial_function_application_v2
newtype0092
2 天前
@WorseIsBetter 大佬想的挺超前的,我看了 v1 版本 20 年就提了,不过投票差了一点没过,这次加了 pipe 的 case 不知道能不能过。
jhdxr
1 天前
@junkk #5 py 万物皆对象??? ruby 缓缓打出了一个问号

而且 Python 哪来的 pipe 给你用,你在 python 里 y(x(a)) 不还是得老老实实写成 y(x(a))
mshadow
1 天前
哎,php 最大的问题不是糖不够,而是糖太多了。fpm 虽然拉低了入门门槛,但严重制约了 php 的上限,为啥死活不改啊?
lyxxxh2
1 天前
确实很不错的功能。
php 数组处理太蛋疼了, 要么定义多个变量,要么嵌套。
我都是转 laravel collection 对象
$result = collection(array)
->filter(fn() ...)
->map(fn() ..)

而有了这个之后,我不再需要 laravecollectionl ,甚至更复杂的操作。
$result = array
|> array_filter(fn($item) => )
|> array_map ..
|> fn(..)
akjarjash
1 天前
PHP:
注解:[]
管道:|>
都很独特🤣
zjsxwc
1 天前
@mshadow #52
你这信息 out 好几年了吧,
frankenphp 都被 php 官方收编好几年了,就是来代替 php-fpm 的。
EscYezi
1 天前
@lyxxxh2 对 php 不太懂,但怎么感觉 laravel collection 版本看起来更短更一致(
jhdxr
1 天前
@mshadow 因为这东西需要深入理解才能改。改改语法糖啥的社群理解起来容易,RFC 容易通过,改起来也**相对**容易。至于底层的那些说实话 nikita 跑路后 dmitry 发个邮件都没啥能真正回应的人。。。
2024
1 天前
关注下 https://github.com/php-any/origami GO 版本的 PHP, GUI 都能写
zjsxwc
1 天前
@2024 #58 你好,这个 origami 语言,目前兼容 php 哪个版本的语法?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1155173

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX