Pogledajte određenu poruku
Staro 15. 11. 2005.   #15
Ilija Studen
Direktor Kombinata
Invented the damn thing
 
Avatar Ilija Studen
 
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
Ilija Studen će postati "faca" uskoroIlija Studen će postati "faca" uskoro
Default

Osnovna svrha Singletona je da osigura da imaš jednu instancu klase. Još jedna osobina je da toj instanci možeš pristupiti pozivom jednog statičkog metoda klase. Ne zna koje jezike koristiš, ali u PHPu je generalan problem imati "opštepristune" promenljive. Možeš da koristiš neki od autoglobals nizova ($_GLOBALS), cimati se sa globals sve vreme, prosleđivati kao parametre (stupid) itd, ali to je sve daleko od elegantnog rešenja.

CartService::instance() vraća jednu jedinu instancu servisa kojoj možeš da pristupiš odakle god hoćeš. Primera radi, da bih dodao proizvod u cart dovoljno je da napišeš:

Kôd:
CartService::instance()->addProduct( new Product(12) );
Ovo možeš pozvati odakle god hoćeš: iz funkcije, kontrolera, template (ok, ovo bi bilo glupo, samo navodim primer), a da ne moram da je prosleđujem, cimam se sa globals itd.

CartService je Singleton klasa koja se brine o korpi i pruža niz metoda za baratanje proizvodima (add, remove, setQuantity, clear itd). Ništa posebno, samo je u shop delu skripte izuzetno bitna... Umesto da se uvek ručno uvezuješ podatke imaš CartService koji to radi.

PS: Za često korišćene operacije definišen shortcut funkciju tipa add_to_cart(Product $product, $quantity = 1); da se ne smaram.
Ilija Studen je offline   Odgovorite uz citat