PHP8.5で追加された「パイプ演算子」の使い方

PHP8.5が2025年11月に初回リリースを迎えました。
従来通り様々なアップデートが行われましたが、今回は「パイプ演算子」について詳しく見ていきます。

パイプ演算子とは

PHP8.5で追加された演算子です。
前回のnullsafe演算子の追加がPHP8.0の時だったので、実に5年ぶりの新規追加となりました。

機能面については公式アナウンスを見るのが一番良いと思います。

パイプ演算子を使うと、中間変数を扱うことなく複数の関数呼び出しを繋げることができます。これによってたくさんの「入れ子呼び出し」を置き換え、中から外ではなく先に向かって読むことができるようになります。

PHPは関数の引数に関数を渡せる言語ですから、入れ子が深くなってしまう可能性があります。

例えば以下のコードを見てください。
文字列の操作用関数を連続で色々使っているサンプルです。

<?php

$text = " Hello,\nWorld!!!\t\t "; 

// 改行・タブをスペースに置換
$text = str_replace(["\n", "\r", "\t"], ' ', $text);

// 前後の空白を削除
$text = trim($text);

// 小文字化
$text = strtolower($text);

// 記号除去
$text = preg_replace('/[^a-z0-9\s]/i', '', $text);

// 先頭10文字に切り詰め
$text = substr($text, 0, 10);

echo $text; //結果) "hello worl"

PHP8.4までで上記コードをまとめようとすると以下の通りになります。

<?php

$result = substr(
 preg_replace('/[^a-z0-9\s]/i', '',
  strtolower(
   trim(
    str_replace(["\n", "\r", "\t"], ' ', " Hello,\nWorld!!!\t\t ")
   )
  )
 ), 0, 10
);

確かに短くはなりましたが、これでは最初のコードの方が見やすい気がします。

この状況を解消するために今回紹介する「パイプ演算子」が役立ちます。

まずは基本的な使い方から見ていきましょう。

パイプ演算子の基本の使い方

<?php

// パイプ演算子の左辺の値が右辺に渡される
$result = "Hello World" |> strlen(...);

// 結果)11
echo $result, PHP_EOL;

// 上記の例と同じ記述
$result = strlen("Hello World");

右辺には「引数を1つ取るPHPの有効なcallable」か「そのように評価される任意の式」を指定できます。

パイプ演算子の右辺に引数が2つ以上存在するcallableを指定したい場合は、書き方を工夫する必要があります。

パイプ演算子のその他のOKパターン

引数が2つ以上ある関数を利用したい場合は、アロー関数でラップします。

<?php

// アロー関数でラップしたサンプル
$result = ["apple", "banana", "orange"] |> (fn($x) => array_map(strtoupper(...), $x));
print_r($result);

この場合でもパイプ演算子の左辺の値が右辺のアロー関数に渡されます。

ただし、アロー関数を利用する時は、文法的な曖昧さを回避するため、アロー関数そのものを括弧で囲う必要があります。

パイプ演算子で可読性アップ

では最後に、冒頭のサンプルをパイプ演算子を使って書き直してみます。
<?php
$result = " Hello,\nWorld!!!\t\t "]
     |> (fn($v) => str_replace(["\n", "\r", "\t"], ' ', $v))
     |> trim(...)
     |> strtolower(...)
     |> (fn($v) => preg_replace('/[^a-z0-9\s]/i', '', $v))
     |> (fn($v) => substr($v, 0, 10));

echo $result;

値の流れが追いやすくなったことで可読性が上がりました。

2026年5月現在、PHP8.5は最新バージョンですので、まだ利用できる機会が少ないかと思われますが、実行環境のバージョンアップの際は是非利用してみてください。

—————————-

今回PHPの文法についてご紹介しましたが、カサレアルではPHPについて体系的に学べる研修コースをご用意しています。是非ご検討ください。

PHPで学ぶはじめてのWebアプリケーション
https://www.casareal.co.jp/ls/service/openseminar/4003-online

PHP基礎
https://www.casareal.co.jp/ls/service/openseminar/4004-online

--------------------------
開発支援・技術研修のご要望・ご相談はこちらから
--------------------------
【この技術ブログを読んだエンジニアの皆様へ】
カサレアルブログをお読みいただき、ありがとうございます!

私たちは、常に新しい技術に挑戦し、ユーザーのニーズに応えるサービスを提供しています。
もし、当社の技術への情熱や、会社・チーム・社員の雰囲気に共感いただけたなら、
ぜひ私たちと一緒に働きませんか?
現在、株式会社カサレアルでは事業拡大に伴い、新たな仲間となるエンジニアを積極的に募集しています。

少しでも興味をお持ちいただけましたら、まずは弊社のことを知っていただけると嬉しいです。
▼採用サイト
https://www.casareal.co.jp/recruit/career
▼社員インタビュー
https://hrmos.co/pages/casareal/jobs/0000016
▼エンジニアの仲間になる! エントリーはこちらから
https://hrmos.co/pages/casareal/jobs

皆様のエントリーを心よりお待ちしています!

外出中のひらめきをObsidianに残すために、ChatGPTの音声入力を使ってみた話

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

コメント ※

名前 ※

メール ※

サイト