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.