PHP: costanti

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.