เรื่องเล่าจากโลก PHP: Pipe Operator (|>) ตัวจิ๋วพลังแจ๋วในเวอร์ชัน 8.5

PHP 8.5 ที่จะเปิดตัวในเดือนพฤศจิกายนนี้ เตรียมเพิ่มฟีเจอร์ใหม่ที่นักพัฒนาเรียกร้องกันมานาน: “pipe operator” หรือ |> ซึ่งดูเผิน ๆ อาจเหมือนแค่ลูกเล่นเล็ก ๆ แต่จริง ๆ แล้วมันเปลี่ยนวิธีเขียนโค้ดให้สะอาดและเข้าใจง่ายขึ้นอย่างมาก

หลักการของ pipe operator คือการส่งค่าจากด้านซ้ายไปยังฟังก์ชันด้านขวาโดยตรง เช่น:
$result = "Hello World" |> strlen(...);

ซึ่งเทียบเท่ากับ:
$result = strlen("Hello World");

แต่ความเจ๋งจริง ๆ คือเมื่อใช้แบบ “chain” หรือ “pipeline” เช่น:
$result = $arr
|> fn($x) => array_column($x, 'tags')
|> fn($x) => array_merge(...$x)
|> array_unique(...)
|> array_values(...);

แทนที่จะต้องเขียนแบบ nested function ที่อ่านยากและดูรกสายตา หรือใช้ตัวแปรชั่วคราวหลายตัวให้เปลืองสมอง

ฟีเจอร์นี้มีแรงบันดาลใจจากภาษา functional เช่น F#, OCaml และ Elixir รวมถึง Hack/HHVM ที่ Facebook เคยพัฒนาไว้ก่อนหน้านี้ โดยมีการเสนอ RFC มาตั้งแต่ปี 2016 แต่เพิ่งจะได้เห็นผลจริงในปี 2025

นอกจากนี้ pipe operator ยังรองรับ callables หลากหลายรูปแบบ ไม่ว่าจะเป็นฟังก์ชันธรรมดา, lambda, arrow function, method ของ class หรือแม้แต่คลาสที่มี __invoke() ก็ใช้ได้หมด ขอแค่รับ argument เดียว

https://thephp.foundation/blog/2025/07/11/php-85-adds-pipe-operator/
🔧🧵 เรื่องเล่าจากโลก PHP: Pipe Operator (|>) ตัวจิ๋วพลังแจ๋วในเวอร์ชัน 8.5 PHP 8.5 ที่จะเปิดตัวในเดือนพฤศจิกายนนี้ เตรียมเพิ่มฟีเจอร์ใหม่ที่นักพัฒนาเรียกร้องกันมานาน: “pipe operator” หรือ |> ซึ่งดูเผิน ๆ อาจเหมือนแค่ลูกเล่นเล็ก ๆ แต่จริง ๆ แล้วมันเปลี่ยนวิธีเขียนโค้ดให้สะอาดและเข้าใจง่ายขึ้นอย่างมาก หลักการของ pipe operator คือการส่งค่าจากด้านซ้ายไปยังฟังก์ชันด้านขวาโดยตรง เช่น: $result = "Hello World" |> strlen(...); ซึ่งเทียบเท่ากับ: $result = strlen("Hello World"); แต่ความเจ๋งจริง ๆ คือเมื่อใช้แบบ “chain” หรือ “pipeline” เช่น: $result = $arr |> fn($x) => array_column($x, 'tags') |> fn($x) => array_merge(...$x) |> array_unique(...) |> array_values(...); แทนที่จะต้องเขียนแบบ nested function ที่อ่านยากและดูรกสายตา หรือใช้ตัวแปรชั่วคราวหลายตัวให้เปลืองสมอง ฟีเจอร์นี้มีแรงบันดาลใจจากภาษา functional เช่น F#, OCaml และ Elixir รวมถึง Hack/HHVM ที่ Facebook เคยพัฒนาไว้ก่อนหน้านี้ โดยมีการเสนอ RFC มาตั้งแต่ปี 2016 แต่เพิ่งจะได้เห็นผลจริงในปี 2025 นอกจากนี้ pipe operator ยังรองรับ callables หลากหลายรูปแบบ ไม่ว่าจะเป็นฟังก์ชันธรรมดา, lambda, arrow function, method ของ class หรือแม้แต่คลาสที่มี __invoke() ก็ใช้ได้หมด ขอแค่รับ argument เดียว https://thephp.foundation/blog/2025/07/11/php-85-adds-pipe-operator/
THEPHP.FOUNDATION
PHP 8.5 Adds Pipe Operator: What it means
The PHP Foundation — Supporting, Advancing, and Developing the PHP Language
0 Comments 0 Shares 23 Views 0 Reviews