PHP 8.5 ve sonraki sürümler, doğrudan çağrılabilir öğeler üzerinde çalışan
bir işleci destekler. |> işleci veya "boru", sağ
tarafta tek bağımsız değişkenli çağrılabilir bir öğeyi kabul eder ve sol
taraftaki değeri ona aktararak çağrılabilir öğenin sonucunu değerlendirir.
Sağ taraftaki çağrılabilir öğe, geçerli herhangi bir PHP çağrılabilir öğesi
olabilir: bir Closure,
birinci sınıf
çağrılabilir bir öğe, __invoke()
örnekleyen bir nesne vb.
Bu, aşağıdaki iki satırın mantıksal olarak eşdeğer olduğu anlamına gelir.
Örnek 1 - |> Kullanımı
<?php
$result = "Merhaba Dünya" |> strlen(...);
echo $result, PHP_EOL;
$result = strlen("Merhaba Dünya");
echo $result, PHP_EOL;
?>Yukarıdaki örneğin çıktısı:
14 14
Tek bir çağrı için pek kullanışlı olmasa da, birden fazla çağrı birbirine zincirlendiğinde kullanışlı hale gelir. Yani, aşağıdaki iki kod parçası mantıksal olarak eşdeğerdir:
Örnek 2 |> çağrılarını zincirleme
<?php
$result = "PHP Rocks"
|> htmlentities(...)
|> str_split(...)
|> (fn($x) => array_map(strtoupper(...), $x))
|> (fn($x) => array_filter($x, fn($v) => $v != 'O'))
;
echo $result, PHP_EOL;
$temp = "PHP Rocks";
$temp = htmlentities($temp);
$temp = str_split($temp);
$temp = array_map(strtoupper(...), $temp);
$temp = array_filter($temp, fn($v) => $v != 'O');
$result = $temp;
echo $result, PHP_EOL;
?>Yukarıdaki örneğin çıktısı:
Array
(
[0] => P
[1] => H
[2] => P
[3] =>
[4] => R
[6] => C
[7] => K
[8] => S
)
Array
(
[0] => P
[1] => H
[2] => P
[3] =>
[4] => R
[6] => C
[7] => K
[8] => S
)
Borunun sol tarafı herhangi bir değer veya ifade olabilir. Sağ taraf, tek bir bağımsız değişken alan geçerli bir PHP çağrılabilir öğesi veya böyle bir çağrılabilir öğe olarak değerlendirilen herhangi bir ifade olabilir. Birden fazla zorunlu bağımsız değişkeni olan işlevlere izin verilmez ve işlev yetersiz bağımsız değişkenlerle normal şekilde çağrılmış gibi başarısız olur. Başvuru olarak değişken alan işlevlere izin verilmez. Sağ taraf geçerli bir çağrılabilir öğe olarak değerlendirilmezse hata oluşur.
Bilginize:
Sözdizimi belirsizliğini önlemek için, yukarıdaki örneklerde olduğu gibi, bir boru işleciyle kullanıldığında ok işlevlerinin yaylı ayraç içine alınması GEREKTİĞİ unutulmamalıdır. Bunu yapmamak, ölümcül bir hataya yol açar.