PHP

Come utilizzare funzioni di callback in PHP

Callback in PHP

Una tecnica comunemente usata in programmazione è l’utilizzo delle callback. Una callback è una funzione che data come parametro ad un’altra funzione può essere richiamata nello svolgimento di quest’ultima.

In questo articolo vi mostrerò come definire e richiamare callbacks in PHP, e come può essere utile farne uso.

Supponiamo di avere uno script PHP che quando viene eseguito fa una ricerca del termine su diversi motori di ricerca. Il tutorial non vuole spiegherà come elaborare i risultati di ricerca, ma solo dimostrare come una callback può essere utile.

Implementare l’esempio sopra senza l’utilizzo di callback può essere simile al seguente codice:

L’esempio può essere modificato per utilizzare la funzione di callback, richiamata ogni volta che un singolo motore di ricerca ha completato la ricerca.

Ci sono tre tipi di utilizzo di callback:

  • una funzione PHP standard: passata come una stringa.
  • un metodo statico di una classe: passato come un array in cui il primo elemento è il nome della classe e il secondo è il nome del metodo.
  • un metodo di un oggetto: anch’esso passato come prima tramite array, dove il primo elemento è l’oggetto stesso.

Ecco il codice che illustra come definire ogni tipologia di callback:

Per verificare se una variabile può essere definita come una funzione, e quindi utilizzato come una callback, possiamo utilizzare is_callable(), una funzione PHP che accetta la callback come unico argomento. Quindi possiamo utilizzare la funzione call_user_func() che permette di richiamare la funzione callback passata come primo argomento e ulteriori argomenti passati come parametri alla callback stessa.

Tornando al nostro esempio iniziale, possiamo modificare la funzione searchBySearchEngine in modo che prenda come terzo argomento la callback, richiamata ogni volta che un motore di ricerca ha completato la sua ricerca.

Potere notare che all’esecuzione del codice sopra i messaggi di feedback vengono visualizzati ogni qual volta un motore di ricerca ha restituito dei risultati, e non come nel primo codice al termine dello script.

You might also like

  • Carlo

    Ciao, volevo chiederti un chiarimento sul callback php.

    if(!is_callable($callback,false,$callableName){
    trow new Exception(“$callableName is not callable” . “as a parameter to onload”);
    return false;
    }
    $this->_onload=$callback;

    potresti chiarirmi il significato di questo codice?

    grazie

    24 novembre 2010

LEAVE A REPLY