Corsi on-line

Chiamata indiretta dei metodi in PHP 5.4

Analizzando le novità relative a PHP 5.4 (versione attaulmente non disponibile per la fase di produzione in quanto ancora fornita sotto forma di Release Candidate), ho scoperto una nuova feature che probabilmente non sarà nota quanto l’introduzione dei traits o del Web server integrato, ma che risulta comunque particolarmente interessante; si tratta della possibilità di richiamare indirettamente (o di effettuare chiamate indirette) i metodi.

Tale procedura potrà essere effettuata sia attraverso array o oggetti afferenti a funzioni anonime; un semplice esempio chiarificatore potrebbe essere il seguente:

<?php
class Ciao {
static public function mondo($i) {
echo "Ciao, $i\n";
 }
}

function ciaoMondo($i) {
echo "Ciao, $i\n";
}

$chiamata = array(
array('Ciao', 'mondo'),
function ($i) {
echo "Ciao, $i\n";
 },
'ciaoMondo'
);

foreach ($chiamata as $j => $chiamata) {
if (is_callable($chiamata)) {
$chiamata($j);
 }
}
?>

Analizziamo il codice proposto:

  1. viene definita una classe che integra un metodo il cui compito è quello di stampare il contenuto di una variabile e un valore d’incremento;
  2. è quindi il compito di una funzione definita dall’utente che produrrà lo stesso output;
  3. viene poi introdotta una closure che stamperà lo stesso risultato è fara riferimento alla funzione precedentemente definita;
  4. infine, i valori di ritorno di metodi e funzioni verranno stampati a video tramite ciclo.

Il risultato dell’esecuzione sarà:

Ciao, 0
Ciao, 1
Ciao, 2

Otterremo così tutti i valori di ritorno senza una chiamata diretta al metodo, semplicemente ciclando un array, un’ulteriore controprova di questa funzionalità potrà essere ottenuta modificando gli output prodotti da funzioni e metodi.

Post correlati
I più letti del mese
Tematiche