Nepřímo závislý doplňek na jiných
- akadlec
- Člen | 1326
Jak korektně řešit závislosti jednoho doplňku na druhém? Např. chci aby měl v mém doplňku možnost využít FB a k tomu abych jej mohl použít bude doplněk potřebovat Kdyby\Facebook. Ale bude to volitelné přes config. Pokud si programátor nastaví „enableFB“ aby to provedlo kontrolu zda je k dispozici extension pro facebook.
Udělat do afterCompile kontrolu zda je požadováno aby se používal FB a tak si udělat kontrolu všech extension zda je mezi nimi Kdyby\Facebook?
Dále si je pak do služby předat přes konstruktor? Vložit jim defaultní hodnotu NULL pro případ že služba nebude k dispozici? Nebo přes nějaký setter či inject?
Aby to byla nějaká uni definice bych chtěl asi moc že? ;) Myšleno tak že doplněk bude chtít FB a je na programátorovi jaký doplněk na FB použije, zda od Filipa Kdyby\Facebook či něco vlastního nebo od někoho jiného?
- Filip Procházka
- Moderator | 4668
Kdybys měl definovaný nějaký obecný interface, tak by dávalo smysl povolit použití něčeho, co tenhle interface implementuje, tedy několik možných doplňků například. Jenže takový interface neexistuje :)
Dává mi tedy smysl mít autodetekci, jestli je v compileru připojen
například FacebookExtension
a když bude připojen tak
automaticky funkcionalitu povolit.
Normálně v loadConfiguration
bych si zavolal třeba
if ($this->compiler->getExtensions('Kdyby\Facebook\DI\FacebookExtension')) {
// existuje, tak nakonfigurovat
}
A dál už je to hračka, ne? :)
- akadlec
- Člen | 1326
jj s tím interface mě to napadlo, ono udělat ho by snad ani nebyl problém, ale zase by jej museli implementovat vývojáři konkrétních doplňku a to by asi problém byl ;)
Já bych to raději udělal opačně, resp. on ten doplněk bude fungovat normálně bez FB a je až na vývojáři zda jej bude chtít použít či nikoliv a pokud jej použije a nepřipojí FB extension tak aby to na něj zařvalo že na něco zapomněl ;)