Oltre alle proprietà ed ai metodi, in una classe possiamo dichiarare le costanti, proprio come accade nel codice di primo livello. Le costanti differiscono dalle proprietà per due aspetti fondamentali:
Le costanti di una classe dunque, sono dati statici, immutabili.
Per dichiarare una costante all'interno di una classe, occorre utilizzare la keyword const seguita dal nome e dal valore della costante stessa:
class MyClass {
// costanti
const A = 'A';
const B = 'B';
const C = 'C';
}
Proprio come nel caso delle proprietà, è possibile assegnare un valore ad una costante direttamente nella fase di dichiarazione della stessa. Il valore tuttavia, deve essere un valore semplice e non, ad esempio, un risultato di un'espressione, un'assegnazione di variabile o il valore restituito da una funzione. Le costanti inoltre, non possono contenere valori complessi:
class MyClass {
// costanti
const A = 2 * 2; // errore
const B = array(10, 20); // errore
const C = $a; // errore
const D = get_value(); // errore
}
A differenza delle proprietà e dei metodi, le costanti non hanno una posizione definita per ogni istanza della classe. Questo perché le costanti sono dati classe e non dati istanza: esse rappresentano un dato statico (tenete a mente questo ultimo termine perché tra poche lezioni impareremo quanta importanza riscuote all'interno della OOP) .
La logica conseguenza a quanto detto, è che non è possibile né utilizzare la keyword $this per riferirsi alle costanti dall'interno della classe, né l'operatore di deferenziamento ("->") per riferirsi dall'esterno. Occorrono dunque altre modalità per accedere alle costanti. Eccole:
self, in combinazione con l'operatore di risoluzione dell'ambito ("::"), per accedere al valore delle costanti dall'interno della classeIn base a quanto detto, vediamo dunque come accedere ai valori delle costanti, sia dall'interno che dall'esterno della classe:
class MyClass {
// costanti
const A = 10;
const B = 10;
public function getConsts() {
echo "The value of the constant A is " . self::A;
echo "The value of the constant B is " . MyClass::B;
}
}
$myClass = new MyClass();
// stampa "The value of the constant A is 10 The value of the constant B is 20"
$myClass->getConsts();
// stampa 10
echo MyClass::A;
Ricordo inoltre, che non è assolutamente possibile accedere al valore di una costante tramite le istanze della classe, altrimenti si finirebbe per causare un errore:
echo $myClass::A; // errore
Questo accade perché vi è un'enorme differenza tra i dati dinamici di una classe (proprietà e metodi) ed i dati statici (costanti, proprietà statiche, metodi statici), come vedremo nel dettaglio nella lezione dedicata appunto ai dati statici.
Come abbiamo visto, grazie alla presenza delle costanti, possiamo inserire dati immutabili nelle nostre classi. Molti sviluppatori creano vere e proprie classi wrapper statiche che contengono solo costanti, in modo da usufruirne successivamente attraverso una postazione centralizzata (inoltre le costanti dichiarate nelle classi sono un'alternativa più veloce rispetto a quelle di primo livello dichiarate con la funzione define):
class Tools {
url: "http://www.google.com/",
copyright: "Google Inc.",
root: "/",
reader: "/reader"
}
// stampa "http://www.google.com/"
echo Tools::url;
// stampa "Google Inc."
echo Tools::copyright;
Nella prossima lezione osserveremo il metodo più importante che è possibile implementare in una classe: il costruttore.
Sessioni PHP: cosa sono, come si usanoDalla configurazione di PHP, alla gestione delle sessioni in un... |
Continuous Integration: automatizziamo i client con PhingContinuous Integration: automatizziamo i client con Phing. Esempi... |
Archiviazione delle applicazioni PHP con PharCome incorporare intere applicazioni PHP all'interno di un singolo... |
I traits in PHP 5.4Cosa sono, a cosa servono e come si unsano i traits, la novità per... |
PHP 5.4: il web server integratoImpara ad usare il web server integrato nella versione 5.4 di PHP:... |
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Guida PHP con Windows e IISInstallare ambienti per lo sviluppo e la produzione di applicazioni... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |