php.watch/versions/8.5/pipe-operator
$result = "Hello World"
|> strtoupper(...)
|> str_shuffle(...)
|> trim(...);

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

相当于把 str 对象化然后链式调用?

只能算是加了个语法糖吧?

可能因为 JS 有 oop ,oop 链式调用可以达到相同的效果,只不过外部扩展需要有 extension method 之类的特性,extension method 可以覆盖 pipe 的功能。

是语法糖,但不是对象化,a |> x(...) |> y(...) 相当于 y(x(a)),用 pipe 可读性会好一点,编写的时候也会更符合人类思维(先用 x 处理再用 y 处理)

相当于管道吧

#3 嗯。。。感觉是个无关紧要的东西....

py 那种万物皆对象的早就这么做了

相当于 Java 里的 Builders ?

逐渐变成 perl

JS 也有啊

|>
这语法果然只有 php 才想的出来...

看着有点丑陋

java 里的 Stream ?

满屏幕的$,这样写至少少一半的$,也算是 php 特色了

不是哦,很早之前 JS 就说要用|>了,但是现在还没有搞好。 github.com/tc39/proposal-pipeline-operator

这语法在函数式语言里常见的很……

PHP 还活着也属于奇迹

就是把类似 C 语言的面向过程的函数,也能和面向对象的链式调用一样使用。

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

$obj->method1()->method2()->method3();

这语法也太丑了

我最早在 elixir 使用这个语法,现在 php 也增加了,确实是可以👍

这范例里的两个系统函数:strtoupper 和 str_shuffle 是什么命名规则?

elixir 早就有了
hexdocs.pm/elixir/enumerable-and-streams.html#the-pipe-operator

|> 怎么这么奇怪的语法

PHP 是世界上最好的语言。

这就是 PHP 早期混乱、缺乏设计的活化石,没有规则

新特性就叫管道操作符,结合 (...) 语法更为直观。这个符号并不丑陋,启用连字的话还是挺直观的。

没有什么魔法,只是让 PHP 程序员更舒服而已,仅此。

很多语言都用的是这个语法,"|" 也挺适合但被大多数语言定义为了或运算操作符。 |> 在启用了连字字体里,一般显示为 “▷” 。

|> 这个语法来自 Elixir 吧,上面就以为提到 Elixir 的,都这么没见过世面吗

|> 是管道语法的主流设计啊,怎么还有人说什么丑,奇怪,PHP 才想得出。。。

#9
菜就多练 少发帖

猜你想看:

(<$>) :: 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

陈年老梗,每敲一个变量获得 1$收入

php8 之后的更新挺现代的,这管道确实改善 quality of life

还在 php