Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
programming:php-singlethon-pattern [2014/05/24 19:18] – Giuseppe Di Terlizzi | programming:php-singlethon-pattern [2014/08/21 18:40] (current) – Giuseppe Di Terlizzi | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== PHP: Singleton Pattern |
- | Con questa guida descriveremo come creare una classe che implementa il pattern //singlethon//. | + | {{http:// |
Come suggerisce il nome, il pattern singleton è un particolare pattern che permette ad una classe di essere istanziata "una sola volta" | Come suggerisce il nome, il pattern singleton è un particolare pattern che permette ad una classe di essere istanziata "una sola volta" | ||
Line 9: | Line 9: | ||
===== Codice ===== | ===== Codice ===== | ||
- | <code .php> | + | <file php Singleton.php> |
<?php | <?php | ||
- | class Singlethon | + | class Singleton |
private static $instance; | private static $instance; | ||
Line 31: | Line 31: | ||
} | } | ||
- | </code> | + | </file> |
Come possiamo vedere il codice contiene poche righe ed è molto intuitivo. | Come possiamo vedere il codice contiene poche righe ed è molto intuitivo. | ||
- | * Prima di tutto abbiamo reso privato il costruttore in modo che la classe venga istanziata solo attraverso il metodo statico '' | + | * Prima di tutto abbiamo reso privato il costruttore in modo che la classe venga istanziata solo attraverso il metodo statico '' |
* Abbiamo impedito di //clonare// la classe richiamando la funzione '' | * Abbiamo impedito di //clonare// la classe richiamando la funzione '' | ||
- | * Nel codice abbiamo istruito PHP ad instanziare la classe solo quando la proprietà statica '' | + | * Nel codice abbiamo istruito PHP ad instanziare la classe solo quando la proprietà statica '' |
Così come abbiamo scritto la classe non permette di fare molto ma // | Così come abbiamo scritto la classe non permette di fare molto ma // | ||
- | Come esempio creiamo una che permette di collezionare valori e di recuperarli in qualsiasi parte del nostro codice | + | Come esempio |
- | <code .php> | + | <file php Registry.php> |
<?php | <?php | ||
- | include | + | include |
| | ||
- | class Registry extends | + | class Registry extends |
private static $registry = array(); | private static $registry = array(); | ||
Line 72: | Line 72: | ||
} | } | ||
- | </code> | + | </file> |
- | Abbiamo esteso la classe | + | Abbiamo esteso la classe |
<code .php> | <code .php> | ||
<?php | <?php | ||
- | include Registry.php; | + | include |
$registry = Registry:: | $registry = Registry:: | ||
Line 88: | Line 88: | ||
</ | </ | ||
- | Adesso | + | Adesso |
Buona programmazione! | Buona programmazione! | ||
- | {{tag> | + | {{tag> |