⊗ppSpFnCb 11 of 83 menu

Funzioni di callback in PHP

Callback è una funzione che viene passata come parametro a un'altra funzione.

Vediamo un esempio. Supponiamo di avere una funzione che accetta un numero come primo parametro, e un callback come secondo parametro:

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

Facciamo in modo che all'interno della funzione il nostro callback venga chiamato per il numero passato:

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

Vediamo ora quali sono le opzioni per passare un callback alla nostra funzione.

Opzione 1

Il nostro callback può essere una funzione ordinaria:

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

In questo caso, come callback passeremo il nome della nostra funzione:

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

All'interno della funzione func il nostro callback verrà chiamato per nome.

Opzione 2

Il nostro callback può essere una funzione anonima, assegnata a una variabile:

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

In questo caso, passiamo come parametro la variabile contenente la nostra funzione:

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

Opzione 3

È possibile passare la funzione anonima direttamente come parametro:

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

Opzione 4

È possibile abbreviare il codice utilizzando una funzione freccia:

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

Problemi pratici

Data una funzione che accetta come parametro un array e un callback, che verrà applicato a ogni elemento dell'array:

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

Chiama questa funzione, passando come parametro un array di numeri e un callback che eleva al quadrato il numero passato.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta