⊗ppSpFnCb 11 of 83 menu

Funkcije-povratni pozivi u PHP-u

Povratni poziv (callback) se naziva funkcija, koja se prosleđuje kao parametar u drugu funkciju.

Hajde da pogledamo na primeru. Neka imamo funkciju koja prvi parametar prima broj, a drugi parametar - povratni poziv:

<?php function func($num, $calb) { } ?>

Učinimo da unutar funkcije naš povratni poziv bude pozvan za prosleđeni broj:

<?php function func($num, $calb) { echo $calb($num); } ?>

Hajde sada da pogledamo, koje ima varijanti prosleđivanja povratnog poziva u našu funkciju.

Varijanta 1

Naš povratni poziv može biti obična funkcija:

<?php function calb($num) { return $num ** 2; } ?>

U ovom slučaju kao povratni poziv prosledićemo ime naše funkcije:

<?php func(3, 'calb'); ?>

Unutar funkcije func naš povratni poziv će biti pozvan po imenu.

Varijanta 2

Naš povratni poziv može biti anonimna funkcija, upisana u promenljivu:

<?php $calb = function($num) { return $num ** 2; }; ?>

U ovom slučaju parametrom prosleđujemo promenljivu sa našom funkcijom:

<?php func(3, $calb); ?>

Varijanta 3

Može se proslediti anonimna funkcija odmah parametrom:

<?php func(3, function($num) { return $num ** 2; }); ?>

Varijanta 4

Može se skratiti kod, koristeći streličastu funkciju:

<?php func(3, fn($num) => $num ** 2); ?>

Praktični zadaci

Data je funkcija, koja parametrima prima niz i povratni poziv, koji će se primeniti na svaki element niza:

<?php function func($arr, $calb) { $res = []; foreach ($arr as $elem) { $res[] = $calb($elem); } return $res; } ?>

Pozovite ovu funkciju, kao parametar prosleđujući niz sa brojevima i povratni poziv, koji podiže prosleđeni broj na kvadrat.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij