Chiamate indirette
Come abbiamo visto nel paragrafo precedente, per chiamare una funzione basta scrivere il suo nome all'interno del codice e questa verrà eseguita. PHP ci permette però di usare alcune "finezze" che in altri linguaggi non è possibile usare.
Avete mai avuto la necessità di poter chiamare una funzione di cui non sapete nemmeno il nome? Questo in PHP è realizzabile con poche linee di codice.
Una chiamata di funzione indiretta è, per quanto il nome possa spaventare, una cosa veramente semplice. Basterà inserire all'interno di una variabile qualsiasi il nome della funzione da chiamare e usare la variabile come se fosse una vera e propria funzione aggiungendo la coppia di parentesi tonde subito dopo il nome.
<?php /* funzione banale che crea la media */ function fai_media ( $a , $b ) { return (float)($a + $b) / 2; } /* ora assegniamo il nome della funzione alla variabile */ $media = "fai_media"; /* ed ecco che richiamiamo la funzione tramite la variabile */ echo "la media tra 2 e 19 è: ". $media (2, 9); ?>
Per chi volesse approfondire questo argomento volevo solo aggiungere alcune piccole informazioni. PHP ci mette a disposizione alcune funzioni da usare con questa tecnica che ci permettono di sapere a priori se la funzione che andremo a chiamare esiste o meno in modo da evitare chiamate a funzioni inesistenti.
La funzione si chiama function_exists, accetta come unico parametro il nome della funzione da controllare e ritorna vero solo se questa esiste.
Inoltre nelle ultime versioni si è andato persino oltre permettendo la creazione di funzioni all'interno del codice. Grazie alla funzione create_function è possibile creare delle funzioni mentre il codice stesso è in esecuzione.
<?php /* 5 funzioni */ function funzione1 () { echo "1"; } function funzione2 () { echo "2"; } function funzione3 () { echo "3"; } function funzione5 () { echo "4"; } function funzione6 () { echo "5"; } for ($i=1; $i<7; $i++) { /* il nome della funzione da chiamare è generato durante l'esecuzione */ $funzione = "funzione$i"; /* la funzione funzione$i con $i==4 non esiste */ if (function_exists ($funzione)) $funzione (); } /* creiamo l'intera funzione dinamicamente */ $runtime = create_function ('$a', 'echo "il doppio di $a è", $a*2;'); $runtime(9); ?>
-
» 2011-05-28
Come usare i Cookie con PHP -
» 2010-04-24
Sintassi alternativa -
» 2010-04-24
Return -
» 2010-04-24
Break
Se ti piace questo articolo, puoi collegarlo al tuo sito copiando il seguente codice HTML nelle tue pagine.
-
30-06-2011 → Anonimo
ha scritto un commento in
Tutorial sul ripristino di GRUB -
26-05-2011 → Bianca
ha scritto un commento in
Arrotondare gli angoli di un div usando i CSS 3 -
25-05-2011 → `wee`
ha scritto un commento in
Le landing page - Cosa sono e a cosa servono -
19-02-2011 → Anonimo
ha scritto un commento in
Linux Reference - Lista comandi utili per Linux -
06-01-2011 → Sergio
ha scritto un commento in
Ottimizzare i metatag delle pagine multilingua -
05-06-2010 → Anonimo
ha scritto un commento in
SQL - Data Manipulation Language - SELECT
Inserisci un commento: