PHP OOP: Co je Callbacks / Callables? [7]
Callback je funkce, která je dosazena jako parametr do jiné funkce. K použití callback funkce v parametru dané funkce stačí jen uvést název požadované (callback) funkce.
Příklady použití callback / callable
/**
* 0
* typical use with array_map (anonymous/arrow function)
*/
$array = [1, 2, 3];
// 0a. - anonymous function
$resultAnonymous = array_map(function ($item) {
return '(0a) item: ' . $item + 1;
}, $array);
print_r($resultAnonymous);
// 0b. - arrow function
$resultArrow = array_map(
fn ($item) => '(0b) item: ' . $item + 1,
$array
);
print_r($resultArrow);// 0c. - anonymous function afCallback()
function afCallback($item) {
return '(0c) item: ' . $item + 1;
}
$resultAfc = array_map('afCallback', $array);
print_r($resultAfc);/**
* 1
*/
function addTextWithCallback(string $string) {
return $string . " + text from callable\n";
}
function printMessage(string $string, callable $callable) {
echo $callable($string);
}
printMessage("(1) Hello world", "addTextWithCallback");
/**
* 2
*/
function fun(){
echo "(2) Hello World\n";
}
echo '(2) is_callable? ' . is_callable("fun") . "\n";
call_user_func("fun");
/**
* 3
*/
call_user_func(function(){
echo "(3) Hello World\n";
});
/**
* 4
*/
function callableFun()
{
echo '(4) Hello World';
}
function runCallable(callable $cf)
{
$cf();
}
runCallable('callableFun');
Tento kód vrátí výsledek:
Array
(
[0] => (0a) item: 2
[1] => (0a) item: 3
[2] => (0a) item: 4
)
Array
(
[0] => (0b) item: 2
[1] => (0b) item: 3
[2] => (0b) item: 4
)
Array
(
[0] => (0c) item: 2
[1] => (0c) item: 3
[2] => (0c) item: 4
)
(1) Hello world + text from callable
(2) is_callable? 1
(3) Hello World
(4) Hello World