Funkce zpětného volání PHP
Funkce zpětného volání
Funkce zpětného volání (často označovaná jen jako "zpětné volání") je funkce, která se předává jako argument jiné funkci.
Jako funkci zpětného volání lze použít jakoukoli existující funkci. Chcete-li použít funkci jako funkci zpětného volání, předejte řetězec obsahující název funkce jako argument jiné funkce:
Příklad
Předejte zpětné volání array_map()
funkci PHP pro výpočet délky každého řetězce v poli:
<?php
function my_callback($item) {
return strlen($item);
}
$strings = ["apple", "orange",
"banana", "coconut"];
$lengths =
array_map("my_callback", $strings);
print_r($lengths);
?>
Počínaje verzí 7 může PHP předávat anonymní funkce jako funkce zpětného volání:
Příklad
Použijte anonymní funkci jako zpětné volání pro array_map()
funkci PHP:
<?php
$strings = ["apple", "orange", "banana", "coconut"];
$lengths =
array_map( function($item) { return strlen($item); } , $strings);
print_r($lengths);
?>
Zpětná volání v uživatelsky definovaných funkcích
Uživatelsky definované funkce a metody mohou také převzít funkce zpětného volání jako argumenty. Chcete-li použít funkce zpětného volání uvnitř uživatelem definované funkce nebo metody, zavolejte ji přidáním závorek do proměnné a předejte argumenty jako u normálních funkcí:
Příklad
Spusťte zpětné volání z uživatelem definované funkce:
<?php
function exclaim($str) {
return $str . "! ";
}
function ask($str) {
return $str . "? ";
}
function
printFormatted($str, $format) {
// Calling the $format callback
function
echo $format($str);
}
// Pass "exclaim" and "ask" as callback
functions to printFormatted()
printFormatted("Hello world", "exclaim");
printFormatted("Hello world", "ask");
?>