PHP 8.5 加入了 pipe 语法

2 天前
 cj323

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

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

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

4347 次点击
所在节点    PHP
59 条回复
junkk
2 天前
相当于把 str 对象化然后链式调用?

只能算是加了个语法糖吧?
dragondove
2 天前
可能因为 JS 有 oop ,oop 链式调用可以达到相同的效果,只不过外部扩展需要有 extension method 之类的特性,extension method 可以覆盖 pipe 的功能。
dragondove
2 天前
@junkk 是语法糖,但不是对象化,a |> x(...) |> y(...) 相当于 y(x(a)),用 pipe 可读性会好一点,编写的时候也会更符合人类思维(先用 x 处理再用 y 处理)
luziafy
2 天前
相当于管道吧
junkk
2 天前
@dragondove #3 嗯。。。感觉是个无关紧要的东西....

py 那种万物皆对象的早就这么做了
ooTwToo
2 天前
相当于 Java 里的 Builders ?
cbythe434
2 天前
逐渐变成 perl
crocoBaby
2 天前
JS 也有啊
dongisking
2 天前
|>
这语法果然只有 php 才想的出来...
way2create
2 天前
看着有点丑陋
635925926
2 天前
java 里的 Stream ?
xiangyuecn
2 天前
满屏幕的$,这样写至少少一半的$,也算是 php 特色了
mandex
2 天前
@dongisking 不是哦,很早之前 JS 就说要用|>了,但是现在还没有搞好。https://github.com/tc39/proposal-pipeline-operator
aloxaf
2 天前
@dongisking 这语法在函数式语言里常见的很……
sky3hao9
2 天前
PHP 还活着也属于奇迹
zjsxwc
2 天前
就是把类似 C 语言的面向过程的函数,也能和面向对象的链式调用一样使用。

$pureData |> c_function1() |> c_function2() |> c_function3();

$obj->method1()->method2()->method3();
zhengwenk
2 天前
这语法也太丑了
Steaven
2 天前
我最早在 elixir 使用这个语法,现在 php 也增加了,确实是可以👍
liuliuliuliu
2 天前
这范例里的两个系统函数:strtoupper 和 str_shuffle 是什么命名规则?
Configuration
2 天前

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

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

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

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

© 2021 V2EX