rozdíl mezi službou a továrničkou

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
zool
Člen | 144
+
0
-

Ahoj chtěl jsem se zeptat jaký je rozdíl mezi službou a továrničkou??
Děkuji

Filip Procházka
Moderator | 4668
+
0
-

Služba se vytvoří jednou a DI Container ti vždy vrací stejnou instanci po dobu běhu aplikace.

Továrnička ti vždy vrací novou instanci třídy, kterou vytváří.

enumag
Člen | 2118
+
0
-

A v případě nových injektovatelných továrniček (2.1-dev only) je továrnička současně též službou.

Editoval enumag (27. 12. 2012 10:51)

castamir
Člen | 629
+
0
-

enumag: V jakém smyslu „také službou“? Tím, že se vrací stejná instance? To snad ne?!? Nebo ve smyslu volání z presenteru jako službu $this->context->sluzba? Nebo došlo ke změně zápisu v configu?

enumag
Člen | 2118
+
0
-

@castamir: Ve smyslu, že ta továrna je objekt, ke kterému se lze dostat buď tak, že ji injectuješ nebo eventuelně přes context jak píšeš. Více informací najdeš zde. V configu je pro to nová syntaxe.

Stále stejnou instanci samozřejmě nevrací, to by nebyla továrna ale locator.

duke
Člen | 650
+
0
-

Továrnička jakožto služba znamená, že systémový kontejner vrací stále stejnou instanci továrničky, ale továrnička sama slouží k vytváření nových instancí něčeho jiného.