https://php.watch/versions/8.5/pipe-operator
$result = "Hello World"
|> strtoupper(...)
|> str_shuffle(...)
|> trim(...);
同样语法 JS 那边卡了很久,PHP 直接上了。
1
junkk Aug 27, 2025
相当于把 str 对象化然后链式调用?
只能算是加了个语法糖吧? |
2
dragondove Aug 27, 2025
可能因为 JS 有 oop ,oop 链式调用可以达到相同的效果,只不过外部扩展需要有 extension method 之类的特性,extension method 可以覆盖 pipe 的功能。
|
3
dragondove Aug 27, 2025
@junkk 是语法糖,但不是对象化,a |> x(...) |> y(...) 相当于 y(x(a)),用 pipe 可读性会好一点,编写的时候也会更符合人类思维(先用 x 处理再用 y 处理)
|
4
luziafy Aug 27, 2025
相当于管道吧
|
5
junkk Aug 27, 2025
|
6
ooTwToo Aug 27, 2025
相当于 Java 里的 Builders ?
|
7
cbythe434 Aug 27, 2025
逐渐变成 perl
|
8
crocoBaby Aug 27, 2025
JS 也有啊
|
9
dongisking Aug 27, 2025 |>
这语法果然只有 php 才想的出来... |
10
way2create Aug 27, 2025
看着有点丑陋
|
11
635925926 Aug 27, 2025
java 里的 Stream ?
|
12
xiangyuecn Aug 27, 2025 满屏幕的$,这样写至少少一半的$,也算是 php 特色了
|
13
mandex Aug 27, 2025
@dongisking 不是哦,很早之前 JS 就说要用|>了,但是现在还没有搞好。https://github.com/tc39/proposal-pipeline-operator
|
14
aloxaf Aug 27, 2025 @dongisking 这语法在函数式语言里常见的很……
|
15
sky3hao9 Aug 27, 2025
PHP 还活着也属于奇迹
|
16
zjsxwc Aug 27, 2025
就是把类似 C 语言的面向过程的函数,也能和面向对象的链式调用一样使用。
$pureData |> c_function1() |> c_function2() |> c_function3(); $obj->method1()->method2()->method3(); |
17
zhengwenk Aug 27, 2025
这语法也太丑了
|
18
Steaven Aug 27, 2025 我最早在 elixir 使用这个语法,现在 php 也增加了,确实是可以👍
|
19
liuliuliuliu PRO 这范例里的两个系统函数:strtoupper 和 str_shuffle 是什么命名规则?
|
20
Configuration Aug 27, 2025
|
21
Tokin Aug 27, 2025
|> 怎么这么奇怪的语法
|
22
Ashore Aug 27, 2025 via Android PHP 是世界上最好的语言。
|
23
panlatent Aug 27, 2025
@liuliuliuliu 这就是 PHP 早期混乱、缺乏设计的活化石,没有规则
新特性就叫管道操作符,结合 (...) 语法更为直观。这个符号并不丑陋,启用连字的话还是挺直观的。 没有什么魔法,只是让 PHP 程序员更舒服而已,仅此。 |
25
lululau Aug 27, 2025
|
26
mx1700 Aug 27, 2025 via Android
|> 是管道语法的主流设计啊,怎么还有人说什么丑,奇怪,PHP 才想得出。。。
|
27
Smileh Aug 27, 2025 @dongisking #9
菜就多练 少发帖 |
28
FalconD Aug 27, 2025 @dongisking 猜你想看:
````haskell (<$>) :: Functor f => (a -> b) -> f a -> f b (<*>) :: Applicative f => f (a -> b) -> f a -> f b (<|>) :: Alternative f => f a -> f a -> f a (>>=) :: Monad m => m a -> (a -> m b) -> m b (>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c (^>>) :: Arrow a => (b -> c) -> a c d -> a b d (<+>) :: ArrowPlus a => a b c -> a b c -> a b c ```` |
29
jmtung Aug 27, 2025 @xiangyuecn 陈年老梗,每敲一个变量获得 1$收入
|
30
oxygenkun101 Aug 27, 2025
php8 之后的更新挺现代的,这管道确实改善 quality of life
|
31
eratpfus7 Aug 27, 2025
还在 php
|
32
tt67wq Aug 27, 2025
Elixir 也是这样的
|
33
ben1024 Aug 27, 2025
oh
|
34
AV1 Aug 27, 2025
真希望 JS 也能早点用上,实在受够了 a(b(c(d)))这样的套娃代码了🐶
|
35
dajj Aug 27, 2025
稀奇古怪的玩意
|
36
kxg3030 Aug 27, 2025
php 的社区是最听劝的社区 php 非常不错~
|
37
keer Aug 27, 2025
这语法还不直观吗?
将上一步的结果通过管道(|)的方式,重定向(>)到下一步处理函数进行计算。 |
38
akiyamamio Aug 27, 2025
|
39
fkdtz Aug 27, 2025
至少能够实现开发效率和可读性这两方面的提升,还是不错的
|
41
kwokky Aug 27, 2025
cool
|
42
TerranC Aug 27, 2025 via iPhone
好像对于 bcadd bcsub 之类的总算不用一层套一层
|
43
newtype0092 Aug 27, 2025
之前看到了,确实有些地方会方便一些。
有个限制比较难受就是只能用 只有第一个参数是 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 里。 |
45
wangtian2020 Aug 27, 2025
JavaScript 你崛起吧
|
46
ywcjxf1515 Aug 27, 2025 via Android
,
|
47
simple2025 Aug 27, 2025
python 居然没有 pipe 这个操作符
|
48
w3cll Aug 27, 2025
php 的异步也在推进了
https://github.com/true-async/php-async |
49
WorseIsBetter Aug 27, 2025
|
50
newtype0092 Aug 27, 2025
@WorseIsBetter 大佬想的挺超前的,我看了 v1 版本 20 年就提了,不过投票差了一点没过,这次加了 pipe 的 case 不知道能不能过。
|
51
jhdxr Aug 28, 2025
|
52
mshadow Aug 28, 2025 via Android
哎,php 最大的问题不是糖不够,而是糖太多了。fpm 虽然拉低了入门门槛,但严重制约了 php 的上限,为啥死活不改啊?
|
53
lyxxxh2 Aug 28, 2025
确实很不错的功能。
php 数组处理太蛋疼了, 要么定义多个变量,要么嵌套。 我都是转 laravel collection 对象 $result = collection(array) ->filter(fn() ...) ->map(fn() ..) 而有了这个之后,我不再需要 laravecollectionl ,甚至更复杂的操作。 $result = array |> array_filter(fn($item) => ) |> array_map .. |> fn(..) |
54
akjarjash Aug 28, 2025
PHP:
注解:[] 管道:|> 都很独特🤣 |
57
jhdxr Aug 28, 2025
@mshadow 因为这东西需要深入理解才能改。改改语法糖啥的社群理解起来容易,RFC 容易通过,改起来也**相对**容易。至于底层的那些说实话 nikita 跑路后 dmitry 发个邮件都没啥能真正回应的人。。。
|
58
2024 Aug 28, 2025
关注下 https://github.com/php-any/origami GO 版本的 PHP, GUI 都能写
|