PHP: costanti

Short link

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.