Callbacks in Ingeboude Funksies in PHP
In PHP is daar 'n reeks ingeboude funksies,
wat callbacks as parameter aanvaar.
Ons sal die algemene werksbeginsel daarvan bestudeer
aan die hand van die voorbeeld van die funksie array_map.
Hierdie funksie aanvaar 'n callback as die eerste parameter,
en 'n array as die tweede. Die funksie pas die
callback op elke element van die array toe
en gee die gewysigde array terug.
Kom ons kyk na die gebruiksmoonlijkhede van hierdie funksie in die lig van ons vorige kennis.
Opsie 1
Kom ons haal die vierkantswortel uit elke element van die array
deur die ingeboude funksie
sqrt.
Om dit te doen, gee ons die naam van hierdie funksie
as 'n string deur as die callback parameter:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map('sqrt', $arr);
var_dump($res);
?>
Opsie 2
Kom ons verhef elke element van die array tot die tweede mag met 'n gewone funksie wat ons geskep het. Om dit te doen, gee ons die naam van hierdie funksie as 'n string deur as die callback parameter:
<?php
$arr = [1, 2, 3, 4, 5];
function func($num) {
return $num ** 2;
}
$res = array_map('func', $arr);
var_dump($res);
?>
Opsie 3
Kom ons skakel ons funksie om na 'n anonieme funksie, gestoor in 'n veranderlike:
<?php
$arr = [1, 2, 3, 4, 5];
$func = function ($num) {
return $num ** 2;
};
$res = array_map($func, $arr);
var_dump($res);
?>
Opsie 4
Gee die anonieme funksie direk as parameter:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(function ($num) {
return $num ** 2;
}, $arr);
var_dump($res);
?>
Opsie 5
Gebruik 'n pylfunksie:
<?php
$arr = [1, 2, 3, 4, 5];
$res = array_map(fn ($num) => $num ** 2, $arr);
var_dump($res);
?>
Opsie 6
Laat die eksponent waarop die getal verhef moet word,
nou deur 'n eksterne veranderlike van die callback bepaal word.
Kom ons gebruik hierdie veranderlike deur toegang daartoe
te verkry via use:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(function ($num) use ($pow) {
return $num ** $pow;
}, $arr);
var_dump($res);
?>
Opsie 7
Herskryf die vorige kode met 'n pylfunksie.
Nou sal die veranderlike $pow
outomaties beskikbaar wees:
<?php
$arr = [1, 2, 3, 4, 5];
$pow = 3;
$res = array_map(fn ($num) => $num ** $pow, $arr);
var_dump($res);
?>
Praktiese Take
Gegee 'n array met strings. Sit die teks van elke element van die array om na hoofletters.
Gegee 'n array met strings. Keer die teks van elke element van die array om, sodat die karakters in omgekeerde volgorde verskyn.