Nella lezione precedente abbiamo visto cosa sono e come si utilizzano le variabili in PHP. In questa lezione vedremo un altro "tipo di contenitore" di dati: le costanti.
Una costante, come lascia intuire il nome, è una porzione di memoria il cui contenuto non cambia durante la fase di elaborazione del nostro programma in PHP. A differenza della variabile, che una volta definita può cambiare valore, la costante resta sempre uguale a se stessa ed ogni "tentativo" di cambiarne il valore produrrà un errore.
Per definire una costante in PHP si utilizza la funzione define() in questo modo:
define('NOME_COSTANTE','valore della costante');
Valgono per le costanti le stesse osservazioni fatte per le variabili:
- Se vengono assegnati valori di tipo stringa questi dovranno essere racchiusi in apici o doppi apici;
- Se vengono assegnati valori numerici non servono gli apici.
Qualche esempio:
define('NOME_COSTANTE_N1','valore della costante');
define("NOME_COSTANTE_N2","valore della costante");
define('NOME_COSTANTE_N3',123);
define('NOME_COSTANTE_N4',123.456);
Per consuetudine, solitamente, i nomi delle costanti vengono scritti in maiuscolo (ma nulla vieta di usare il minuscolo). Si noti che i nomi delle costanti, esattamente come accade nelle variabili, sono case-sensitive, quindi si faccia attenzione all’utilizzo di maiuscole e minuscole nel nome della costante.
E’ anche possibile definire costanti case-insensitive, in tal caso sarà sufficiente specificare ‘true’ come terzo paramentro nella funzione define():
// definisco una costante case insensitive
define('NOME_COSTANTE','valore della costante',true);
echo NOME_COSTANTE; // corretto
echo nome_costante; // corretto
echo Nome_Costante; // corretto
Come abbiamo visto nell’esempio qui sopra la costante viene utilizzata nel codice PHP semplicemente mediante il proprio nome senza, cioè, il simbolo del dollaro che è tipico delle variabili.
Altra differenza con le variabili è che le costanti sono sempre accessibili all’interno delle funzioni del programma (mentre le variabili lo sono solo se importate mediante global).