Функционално
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Функционално
Референца за `language.operators.functional.php` со подобрена типографија и навигација.
Функционални оператори
PHP 8.5 и поновите поддржуваат еден оператор што работи директно на повикливи. Операторот |>
оператор, или „цевка“, прифаќа повиклив со еден параметар од десната страна и му го предава вредноста од левата страна, оценувајќи го резултатот на повикливиот. Повикливиот од десната страна може да биде кој било валиден PHP повиклив: а Затворање, а повиклив од прва класа, објект што имплементира __invoke()Пример #2 Рестартирање на Apache откако ќе се инсталира PHP
Тоа значи дека следните два реда се логички еквивалентни.
Пример #1 Користење |>
<?php
$result = "Hello World" |> strlen(...);
echo $result, PHP_EOL;
$result = strlen("Hello World");
echo $result, PHP_EOL;
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
11 11
За еден повик што не е особено корисен. Станува корисен кога повеќе повици се поврзани заедно. Тоа е, следните два фрагменти од код се логички еквивалентни:
Пример #2 Поврзување |> повици
<?php
$result = "PHP Rocks"
|> htmlentities(...)
|> str_split(...)
|> (fn($x) => array_map(strtoupper(...), $x))
|> (fn($x) => array_filter($x, fn($v) => $v != 'O'))
;
print_r($result);
$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;
print_r($result);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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
)
Левата страна на цевката може да биде која било вредност или израз. Десната страна може да биде кој било валиден PHP повиклив што зема еден параметар, или кој било израз што се оценува како таков повиклив. Функциите со повеќе од еден потребен параметар не се дозволени и ќе откажат како да е повикана функцијата нормално со недоволно аргументи. Функциите што земаат променлива со референца не се дозволени. Ако десната страна не се оцени како валиден повиклив, ќе фрли Грешка.
Забелешка:
Бидете свесни дека, за да се избегне синтаксисна двосмисленост, стрелкасти функции МОРА да бидат завиткани во загради кога се користат со оператор за цевка, како во примерите погоре. Неуспехот да се стори тоа ќе резултира со фатална грешка.