In PHP, come anche in altri linguaggi di programmazione, le costanti si definiscono come quei valori che mantengono inalterato il loro contenuto per tutta la durata dello script o del programma. PHP ha due tipi di costanti: costanti globali e costanti definite all'interno di una classe. Il primo tipo possiede una visibilità globale all'interno di tutto lo script o del programma, mentre il secondo tipo ha una visibilità definita all'interno della classe cui appartengono tali costanti. Tuttavia è possibile accedere anche a tali costanti usando una modalità che vedremo in quest'articolo.
Costanti globali
Le costanti globali vengono definite tramite la funzione define() all'inizio del codice:
define('DB_HOST', 'localhost');
Ora la costante DB_HOST
conterrà il valore localhost
. I valori ammessi devono essere di tipo scalare o null
, ossia:
- intero
- float
- stringa
- booleano
null
In teoria sarebbe possibile anche usare valori di tipo risorsa, ma se ne sconsiglia l'uso in quanto i risultati sono difficili da prevedere. Le costanti non possono essere sovrascritte con nuovi valori: tentare un simile approccio restituirebbe un errore PHP.
Una volta definita in questo modo, la costante DB_HOST
è accessibile in qualsiasi punto del nostro script o programma.
Constanti di classe
Le costanti definite all'interno di una classe vanno fatte precedere dalla parola chiave const
. Il tipo di valori accettato è il medesimo delle costanti globali:
class Test
{
const PI = 3.14;
}
Per accedere al valore di una costante all'interno di una stessa classe si usa la parola chiave self
seguita dall'operatore di risoluzione di scope:
class Test
{
const PI = 3.14;
public function getArea($radius)
{
return (self::PI * pow($radius, 2));
}
}
Per accedere al valore di una costante all'esterno di una classe si usa il nome della classe seguito dall'operatore di risoluzione di scope:
echo Test::PI;
Anche per questo tipo di constanti la sovrascrizione non è consentita.
Costanti e costrutti speciali
Le costanti possono accettare come valori dei costrutti speciali PHP purchè tali valori siano scalari. Esempio:
define('HOST', $_SERVER['HTTP_HOST']);
In questo caso il valore memorizzato è di tipo stringa, quindi consentito.