Capitolo 8. Costanti

Sommario
Sintassi
Costanti predefinite

Una costante Ŕ un identificatore (nome) per un valore. Come si pu˛ intuire, tale valore non pu˛ cambiare durante l'esecuzione dello script (fanno eccezione le costanti magiche, che, in realtÓ, non sono costanti). Una costante Ŕ "case-sensitive" per default. ╚ convenzione comune che i nomi di costante siano sempre maiuscoli.

In PHP il nome di una costante segue le regole di qualsiasi "etichetta". Un nome di costante valido inizia con una lettera o underscore, seguita da un numero qualsiasi di caratteri alfanumerici o underscore. L'espressione regolare che esprime questa convenzione Ŕ: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Nota: In questo contesto una lettera Ŕ a-z, A-Z e i caratteri ASCII dal 127 al 255 (0x7f-0xff).

Come le superglobals, costante Ŕ sempre globale. Si pu˛ accedere alle costanti da qualsiasi punto dello script senza tenere conto della visibilitÓ. Per maggiori dettagli sulla visibilitÓ, leggere la sezione variable scope.

Sintassi

╚ possibile definire una variabile utilizzando la funzione define(). Una volta definita, a una costante non Ŕ possibile cambiare il valore o eliminarla.

Le costanti possono contenere solo dati di tipo scalare (boolean, integer, float e string).

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 ottenga dinamicamente il nome. 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 il nome di una costante che non Ŕ definita, PHP assume che detto valore sia il nome della costante stessa, come se si fosse inserito il testo nel nome . Quando ci˛ accade PHP segnala il problema con un E_NOTICE. Vedere anche il capitolo del manuale sul perchŔ $foo[bar] Ŕ errata (a meno che prima non definisca bar come costante con define()). Per sapere se una costante Ŕ definita, si pu˛ utilizzare la funzione defined().

Di seguito sono riportate le principali differenze rispetto le variabili:

Esempio 8-1. Definizione di costanti

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