PHP8.5で追加された「パイプ演算子」の使い方
PHP8.5が2025年11月に初回リリースを迎えました。
従来通り様々なアップデートが行われましたが、今回は「パイプ演算子」について詳しく見ていきます。
パイプ演算子とは
PHP8.5で追加された演算子です。
前回のnullsafe演算子の追加がPHP8.0の時だったので、実に5年ぶりの新規追加となりました。
機能面については公式アナウンスを見るのが一番良いと思います。
パイプ演算子を使うと、中間変数を扱うことなく複数の関数呼び出しを繋げることができます。これによってたくさんの「入れ子呼び出し」を置き換え、中から外ではなく先に向かって読むことができるようになります。
例えば以下のコードを見てください。
文字列の操作用関数を連続で色々使っているサンプルです。
<?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」か「そのように評価される任意の式」を指定できます。
パイプ演算子のその他の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