Manuale PHP
Indietro |  | Avanti

# Capitolo 13. Costanti

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]*

Esempio 13-1. Nomi di costanti validi ed errati

`<?php // Nomi validi define("FOO", "something"); define("FOO2", "something else"); define("FOO_BAR", "something more") // Nomi di costante errati define("2FOO", "something"); // Nomi validi, ma da evitare: // un domani potrebbero essere utilizzati dal PHP per fornire costanti magiche // e quindi si avrebbero problemi nello script define("__FOO__", "something"); ?>`

> 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:

- Le costanti non iniziano con il segno del dollaro ($);

- 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 ne annullate;

- Le costanti possono essere solo valori scalari;

Esempio 13-2. Definizione di costanti

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

Indietro | Partenza | Avanti
Variables from outside PHP | Risali | Costanti magiche