Prima di vedere come definire una funzione e come usarla, è importante dire che le funzioni si differenziano in due grandi famiglie:
- Bult-in function: delle funzioni proprie del linguaggio php, che noi non possiamo modificare, ma utilizzarne “i benefici” all’interno del nostro codice
- User function: delle funzioni create interamente dallo sviluppatore web
Ci occuperemo, in questa guida, delle User function.
User function in PHP
Una User function è composta da quattro parti:
- la keyword function
- il nome della funzione (inventato, ma quanto più descrittivo possibile del compito della funzione stessa), che utilizzeremo nel nostro codice per richiamarla ed utilizzarla
- le parentesi tonde, che definiscono un punto di entrata per quei valori che definiamo “esterni” alla funzione, ovvero i parametri
- il corpo della funzione dove istruiremo (scriveremo) la logica (il codice) delimitato da parentesi graffe
Vediamo, ora, come si definisce una funzione:
<?php function helloWorld(){} ?>
Come vedi, nell’ esempio soprastante abbiamo effettivamente scritto una funzione in tutto e per tutto. Questa funzione, però, non farà praticamente nulla, poiché non abbiamo istruito la logica. Come possiamo farlo?
<?php function helloWorld(){ echo "Ciao Mondo! \n"; } ?>
La logica, come puoi notare, è la parte di codice compresa tra le parentesi graffe; in questo caso, la nostra funzione “stamperà in console” e renderizzerà a schermo le parole “Ciao Mondo!”.
Cosa intendiamo con “stampare in console”?
Per spiegartelo facciamo un piccolo focus su php echo, reggiti forte!
PHP echo
Iniziamo il nostro piccolo approfondimento con una definizione presa direttamente dalla documentazione php ufficiale:
“echo non è una funzione ma un costrutto del linguaggio. I suoi argomenti sono un elenco di espressioni che seguono la parola chiave echo, separate da virgole e non delimitate da parentesi.”
In pratica, “php echo” prende tutto ciò che segue la keyword echo e lo trasforma in una stringa, mostrandocelo in output, vale a dire “mostrandocelo sullo schermo”, oppure nella console (ovvero il terminale).
Adesso, quindi, abbiamo una funzione che effettivamente compie un’azione.
In realtà, però, manca ancora qualcosa: perché diamo un nome al blocco di codice che compie un’azione specifica? Lo facciamo per poterla richiamare in diversi punti all’interno del nostro codice.Ricordiamoci, quindi, che una funzione, se non richiamata, non viene “attivata” ed effettivamente non farà nulla. Come fare, allora, per richiamare la nostra funzione? Semplice! Attraverso il suo nome seguito dalle parentesi tonde
<?php function helloWorld(){ echo "Ciao Mondo! \n"; } helloWorld(); ?>
In output ci dará:
Esattamente quello che volevamo e ci aspettavamo.
Ma se volessimo, invece, una funzione che ci mostri in output una prima parte “standard” e una seconda parte dinamica? Vediamo un esempio.
Vogliamo che la nostra funzione ci mostri in output frasi come:
“Hai scelto il colore rosso!”
“Hai scelto il colore blu!”
“Hai scelto il colore giallo!”
“Hai scelto il colore verde!”
“Hai scelto il colore arancione!”
Come dicevamo, la prima parte rimane uguale e la parte finale cambia di volta in volta. Vediamo come fare.
Innanzitutto, una caratteristica importante delle funzioni è che possiamo richiamarle piú volte ed avere in output il risultato delle istruzioni al loro interno. Cosa vuol dire?
Se richiamassimo piú volte la funzione “helloWorld” il risultato sarebbe il seguente:
<?php function helloWorld(){ echo "Ciao Mondo! \n"; } helloWorld(); helloWorld(); helloWorld(); helloWorld(); helloWorld(); ?>
In output ci darebbe:
Questo avverrebbe perché, al suo interno, la funzione non fa altro che mandare in output il risultato della nostra istruzione “php echo” (alla quale abbiamo aggiunto un “\n” per poter far andare a capo ad ogni nuova stampa).
Per poter avere un risultato “personalizzato”, come ad esempio la stampa di una stessa frase “Hai scelto il colore” e poi la parte del colore dinamica, dobbiamo introdurre il significato di parametro formale e parametro reale.