Nové nové nové DI – pár myšlenek k pluginům
- Filip Procházka
- Moderator | 4668
Řeším plugin systém. Takže pár mých myšlenek:
Mám něco co připomíná „balíček“, takový balíček obsahuje nějaké modely, služby, komponenty, atd. Vzniká mi ale problém s konfigurací
- Můžu ručně sepsat služby do configu, když komponenty integruji. Tohle
je sice funkční, ale nemám šanci si nechat nadrátovat služby pomocí
autowire, nebo vyhledat služby podle typu, které jsou už v
Nette\Configurator
(a mém poděděném). To se dá částečně řešit „manuálně“ (klasicky výčtem@sluzba
). - Co by bylo lepší, tak mít konfiguraci zvlášť, nějakou výchozí pro
balík, nebo tak. Tady ale vyvstane problém, že musím načítat další
config a nemám šanci se dostat k tagům, nebo si zjistit služby určitého
interface, protože se vytvoří nový
ContainerBuilder
. - Co by bylo úplně super, tak mít konfiguraci dynamicky v databázi. Tohle je u mě víceméně nutnost. Dělám CMSko a potřebuju nějak skládat nastavovat přes UI a později to načítat.
- Jak to dělá VenneCMS, tak config generovat dynamicky? Uložit si specifika do databáze a pak z toho generovat config, ten načítat a Nette se postará o generování PHPka. To se mi zdá teď jako nejlepší.
Kdyby někdo měl nějaký nápad…
Bylo by super, kdyby se někam cachoval index
třída => služba
, aby se v něm dalo hledat a nemusely se
služby vytvářet. Blbý je to u služeb vytvářených
callbackem/továrnou.
Potřeboval bych nějak zapsat svoje služby a mít možnost
překrýt/upravit Nette služby. Nechci mít služby mého
frameworku v configu aplikace, to by šíleně nabobtnalo. Vyhovuje mi
to zapisovat do poděděného Configuratoru, ale zase mě strašně štve, že
ContainerBuilder
bude ignorovat rozhraní těch služeb, protože
je nemá jak zjistit.
Dalo by se to částečně řešit tak, že když továrna není closura,
mohla by se kontrolovat annotace @return
? Podle mě by to úplně
stačilo. Nebo to naučit číst nějakou novou annotaci, pokud by return bylo
nevyhovujíci @service class
(nemusí se kontrolovat use na
začátku souboru?).
A co by bylo nejvíc super, kdyby nám David hodil nějakou kost a mohli jsme aspoň žhavit hlavy, nebo pomoct s nečím, byť by to byly jenom další špatné implementace. Aspoň by nebyl čas remcat :)
- mkoubik
- Člen | 728
Možná to bude OT, ale řešil jste někdo načítání konfigurace z víc
.neon
souborů? Něco jako mergeování výsledných struktur, nebo
include
v NEONu? Hodilo by se mi to právě na definování
balíků služeb v extra souborech, nebo na konfiguraci db v neverzovaném
souboru. Mimo jiné by to šlo použít i pro ty pluginy.
- Filip Procházka
- Moderator | 4668
Něco jsem měl kdysi rozdělané a funkční, ale nějak se mi (v současnosti) nelíbí myšlenka mít více configů.
- nanuqcz
- Člen | 822
mkoubik: řešil, výsledek je zde, ale nijak do hloubky jsem to netestoval.
Pro mé použití to ale jelo bezchybně ;-)