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:04] – 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" |
- | Ma adesso vediamo | + | Ma adesso vediamo |
===== Codice ===== | ===== Codice ===== | ||
- | <code .php> | + | |
+ | <file php Singleton.php> | ||
<?php | <?php | ||
- | class Singlethon | + | class Singleton |
private static $instance; | private static $instance; | ||
Line 30: | 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 attraverso il metodo statico '' | + | * Prima di tutto abbiamo reso privato il costruttore in modo che la classe venga istanziata |
* 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 '' | ||
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 70: | 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 86: | Line 88: | ||
</ | </ | ||
- | Adesso | + | Adesso |
Buona programmazione! | Buona programmazione! | ||
- | {{tag> | + | {{tag> |