Dynamicky načítany NEON podle modulu
- akadlec
- Člen | 1326
Appku mám rozdělenou do několika modulu (front, profil, account,…) a každý z těchto modulů má vlastní config neon kde se definují services a facotries co tento modul používá. Nad těmito configy je pak globánlní config který má v sobě ten zbyte a to co všechny moduly mezi sebou sdíli. Zatím mám config řešený tak že v tom globálním ty jednotlivé configy modulu importuju takže se načte vše i když jsem pravě ve front modulu takže nepotřebuju services co má profile modul.
Dá se nějak udělat aby se načetl config jen pro daný modul? aby to zbytečně nevytvářelo služby a továrničky co nepotřebuje? Nebo není potřeba řešit a změna výkonu bude zanedbatelná?
- pepakriz
- Člen | 246
Loadování configů jednotlivých modulů pomocí sekce
includes
není moc dobrý nápad. Jednak nelze zadat cestu
o adresář výše a dál také nefunguje expanze proměnných. Navíc být
závislý na přesné adresářové struktuře není dobrá cesta.
Zkus napsat pro každý modul vlastní CompilerExtension
, ten
může v sobě config file načítat. Registraci modulu potom provedeš
v sekci extensions
.
Inspirovat se můžeš zde: https://github.com/…33cbff4e31b9
- akadlec
- Člen | 1326
@vvoody: tak tou dynamickou konfiguraci jsem měl jen na mysli to že se načte hlavní config a config daného modulu, nic více nic méně, prostě abych při 5ti modulech nemusel načítat v hlavním configu všech 5 modulovych configu z nichž bude využit jen jeden.
@pepakriz: tak s definici cestz o adresář výše či úplně mimo nemám problém. Každý modul má ten config „u sebe“. Extensions se taky dá (asi zkusím) nicméně to bude ve výsledku stejné ne? jen budu muset mít v extensions přidáno loadování jednotlivých modulů, či se pletu?
- pepakriz
- Člen | 246
@akadlec: Bude to podobné, ale odpadá otázka, „kde se modul nachází?“ Místo toho se řeší jen „Jak se jmenuje třída CompilerExtension?“ a ta se bude jmenovat pořád stejně. Viz: https://forum.nette.org/…e-promennych
Jinak načítat jen některé configy nemá smysl. Při prvním požadavku se sestaví kompletní DIC a při dalších dotazech se jen kontroluje, zda-li nedošlo ke změně configů. V DIC jsou služby volány lazy. Maximálně hrozí, že DIC bude obrovský, ale i tak žádné zásadní zpomalení nehrozí, pokud PHP využívá nějakou opcode cache. Na mém stroji trvá inicializace DIC několik jednotek milisekund.