Nella lezione dedicata alle costanti, abbiamo dato uno sguardo alla differenza che si interpone tra dati dinamici e dati statici di una classe. Come abbiamo già visto, è possibile classificare le proprietà ed i metodi come dati dinamici e le costanti come dati statici.
Tuttavia, oltre a queste, esistono altre componenti che è possibile dichiarare in una classe: le proprietà statiche ed i metodi statici.
A differenza delle normali proprietà, che appartengono alle determinate istanze della classe e vengono richiamate con l'operatore di deferenziamento ("->") e che rappresentano dunque dei dati istanza, le proprietà statiche non appartengono a nessuna istanza in particolare, ma sono di fatto componenti statiche di proprietà della classe stessa.
Ciò significa che non è possibile richiamare le proprietà statiche attraverso le istanze, ma occorre, come nel caso delle costanti, usare l'operatore di risoluzione dell'ambito ("::") oppure la keyword self.
Le proprietà statiche si dichiarano attraverso la parola chiave static, preceduta o seguita opzionalmente dall'indicatore di visibilità (che analizzeremo nelle successive lezioni) e dal namespace desiderato. Se non si specifica nessun indicatore di visibilità, verrà utilizzato il valore public. Ecco un esempio di dichiarazione ed utilizzo delle proprietà statiche:
class MyClass {
// proprietà statiche
public static $apples = 10;
public static $pineapples = 20;
}
// stampa 10
echo MyClass::$apples;
// stampa 20
echo MyClass::$pineapples;
Come possiamo notare, a differenza delle costanti che non richiedono il simbolo del dollaro "$" iniziale, con le proprietà statiche occorre dichiararlo. Le proprietà statiche dunque, essendo dati statici, non possono essere richiamate attraverso le istanze della classe, altrimenti PHP cercherà una proprietà normale avente lo stesso nome e concluderà con l'errore E_NOTICE Undefined property...:
$myClass_1 = new MyClass(); // Notice: Undefined property: MyClass::$apples in C:\Program Files\wamp\www\HTML.it\PHP\guida_oop\lez_8.php on line 59 echo $myClass_1->apples;
Ma cosa cambia dunque, tra le proprietà statiche e le costanti, a parte la differente sintassi?
La risposta è molto semplice: mentre le costanti sono dati immutabili, cioè che devono rimanere invariati durante il corso di tutta l'applicazione, le proprietà statiche possono cambiare il loro valore come le normali proprietà. Ecco un esempio in cui, tramite il metodo costruttore, si contano quante istanze vengono create nel corso del nostro script e tramite il metodo distruttore viene indicato quale istanza, identificata da un idKey univoco, è stata eliminata:
class MyClass {
// proprietà statiche
public static $instances = 0;
public $idKey = false;
// costruttore
public function __construct() {
$this->idKey = ++self::$instances;
echo "This is the #" . $this->idKey . " instance of the class MyClass. Instances created: " . $this->idKey;
}
// distruttore
public function __destruct() {
echo "Instance #" . $this->idKey . " deleted.";
}
}
// stampa "This is the #1 instance of the class MyClass. Instances created: 1"
$myClass_1 = new MyClass();
// stampa "This is the #2 instance of the class MyClass. Instances created: 2"
$myClass_2 = new MyClass();
// stampa "This is the #3 instance of the class MyClass. Instances created: 3"
$myClass_3 = new MyClass();
// al termine dello script: "Instance #1 deleted.", "Instance #2 deleted.", "Instance #3 deleted."
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 |