Co jsou to tagy a k čemu je to dobré?

- Climber007
 - Člen | 105
 
Ahoj,
občas o nich čtu, občas je musím i použít, ale pořád nevím proč? Myslím tagy v konfiguračním souboru. V dokumentaci je o nich pouze jeden řádek a nic víc.
Chtěl bych poprosit někoho kdo umí i tomu nejhloupějšímu vysvětlit, co je to jaderná fúze, k čemu jsou tagy dobré a kdy je tedy používat.
Díky

- David Kudera
 - Člen | 455
 
Pravděpodobně s nimi pracovat vůbec nepotřebuješ, občas se ale hodí. Pomocí tagů totiž můžeš říct nějakému rozšíření, aby se službou něco udělal.
Třeba existuje tag run, pokud ho použiješ, tak nette
automaticky službu při startu „spustí“.
Nebo je třeba využívá kdyby/events, kde jimi označíš svou službu jako subscriber.
V rozšířeních je totiž možné najít všechny definice služeb podle nějakého tagu, což je určitě lepší, než pracovat úplně se všemi definicemi všech služeb.
Editoval David Kudera (17. 7. 2015 12:23)

- Tomáš Votruba
 - Moderator | 1114
 
Ahoj,
jednoduše řečeno: tagem můžeš označit služby. Tyto služby si pak můžeš později všechny posbírat právě pomocí tagu a nějak je zpracovat.
Např. otaguješ všechny služby, které jsou subscriber (viz Kdyby\Events) a Nette je pak předá EventManageru, který si je pomocí tagu všechny vytáhne a zpracuje.
Pokud bys je tagem neoznačil, EventManager (či jakýkoliv jiný „sběrač“), by o nich nevěděl a musel bys to dělat růčo.

- David Matějka
 - Moderator | 6445
 
Slouzeji k oznaceni sluzeb tagem, pokud to napriklad vyzaduje nejaka
extension. V nette, pokud se nepletu, je vyuzit akorat tag run,
kterym oznacis sluzby, ktere se maji spustit automaticky vzdy po vytvoreni DI
kontejneru.
Ale hojne vyuzivaji tagy ruzne doplnky – treba kdyby/translation, ktery podporuje hned 3 tagy. Krom toho, tagy muzou mit i nejake svoje atributy, coz je videt prave u kdyby/translation, kde tag loader ma v atributech informaci o tom, jaky format zpracovava. Pokud by sis tedy napsal vlastni loader, registrujes ho jako sluzbu a pridas mu odpovidajici tag:
services:
	-
		class: MySuperFormatLoader
		tags:
			translation.loader: mySuperFileExtension
translation si pak vytahne vsechny sluzby s timhle tagem a udela s nimi vse, co potrebuje.