Sintassi

È possibile definire una variabile utilizzando la funzione define() o utilizzando la parola chiave const all'esterno di una definizione di una classe in PHP 5.3.0. Una volta definita una costante, non è possibile cambiare il valore o renderlo indefinito.

Le costanti possono contenere solo dati di tipo scalare (boolean, integer, float e string) prima di PHP 5.6. Da PHP 5.6 in poi, è anche possibile definire una costante come un'espressione scalare, ed è anche possibile definire una costante come array. È anche possibile definire costanti come una resource, ma questo dovrebbe essere evitato, perchè può causare risultati inaspettati.

Per ottenere il valore di una costante è sufficiente specificarne il nome. A differenza delle variabili, non è necessario anteporre il simbolo $ al nome di una variabile. Si può anche utilizzare la funzione constant() per leggere il valore di una costante, nel caso in cui se ne volesse ottenere il nome dinamicamente. Si utilizzi get_defined_constants() per ottenere una lista delle variabili definite.

Nota: Costanti e variabili (globali) si trovano in un "namespace" differente. Questo implica che generalmente TRUE e $TRUE sono differenti.

Se si utilizza una costante indefinita, PHP assume che si intendesse il nome della costante stessa, come se si fosse chiamata come una string (COSTANTE vs "COSTANTE"). Un errore di livello E_NOTICE verrà rilasciato quando questo accade. Leggere anche la voce del manuale sul perchè $foo[bar] è errato (a meno che prima non si definisca bar come costante con define()). Questo non si applica alle costanti qualificate (completamente), che solleveranno un errore fatale se non definite. Per sapere se una costante è definita, si può utilizzare la funzione defined().

Di seguito sono riportate le principali differenze rispetto le variabili:

  • Le costanti non iniziano con il segno del dollaro ($);
  • Prima di PHP 5.3, le costanti possono essere definite solo con la funzione define() e non tramite assegnazione;
  • Le costanti possono essere definite e utilizzate ovunque senza seguire le regole di visibilità;
  • Una volta impostate, le costanti non posso essere redefinite e né annullate;
  • Le costanti possono essere valutate solo come valori scalari. In PHP 5.6 è possibile definire array costanti usando la keyword const e in PHP 7 gli array costanti possono anche essere definiti usando define() Si possono usare gli array in espressioni scalari costanti (per esempio, const FOO = array(1,2,3)[0];), ma il risultato deve essere un valore di un tipo permesso.

Example #1 Definizione di costanti

<?php
define("COSTANTE", "Ciao mondo.");
echo COSTANTE; // stampa "Ciao mondo."
echo Costante; // stampa "Costante" e genera una notice.
?>

Example #2 Definizione di Costanti utilizzando la parola chiave const

<?php
// Funzionamento in PHP 5.3.0
const CONSTANT 'Hello World';

echo 
CONSTANT;

// Funzionamento in PHP 5.6.0
const ANOTHER_CONST CONSTANT.'; Goodbye World';
echo 
ANOTHER_CONST;

const 
ANIMALS = array('dog''cat''bird');
echo 
ANIMALS[1]; // visualizza "cat"

// Funzionamento in PHP 7
define('ANIMALS', array(
    
'dog',
    
'cat',
    
'bird'
));
echo 
ANIMALS[1]; // visualizza "cat"
?>

Nota:

Al contrario di definire costanti utilizzando define(), le costanti definite utilizzando la parola chiave const devono essere dichiarate nella scope del livello superiore perchè sono definite in fase di compilazione. Questo significa che non possono essere dichiarate all'interno di funzioni, cicli, istruzioni if oppure blocchi try/ catch.

Leggere anche Le Costanti delle Classi.

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top