Duplicitní služby v modulech

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
TomasG
Člen | 23
+
0
-

Ahoj,
Mám aplikaci rozdělenou do modulů, které potom registruji pomocí CompilerExtension mezi ‚extensions‘ hlavního configu.

extensions:
    replicator: Kdyby\Replicator\DI\ReplicatorExtension
    translation: Kdyby\Translation\DI\TranslationExtension
    core: App\CubeModule\CoreModule\DI\CoreExtension
    test: App\CubeModule\TestModule\DI\TestExtension

    flame: Flame\Modules\DI\ModulesExtension

Kazdý ‚modul‘ má svůj config.neon, ve kterém registruje ‚services‘, které potřebuje.
Jenomže mám jeden modul ‚Core‘, který registruje službu (např. továrničku na komponentu) a pak mám modul ‚Test‘, který registruje tu samou službu.

Jenomže pak dostávám výjimku:

Multiple services of type App\CubeModule\Components\IFileExplorer found: core.explorer, test.explorer

což chápu, protože se snažím zaregistrovat službu, která už zaregistrována je.
Nicméně jak tohle řešit? nějak při načítání konfigurace zjistit, jestli už je služba registrována a pokud ne, tak zaregistrovat?

Díky.

Martk
Člen | 661
+
0
-

ContainerBuilder má metody getByType, findByType, hasDefinition, které zjistí, jestli daná třída existuje.

TomasG
Člen | 23
+
0
-

Díky, snad to je OK řešení.
Sice to teď už nepotřebuji, protože jsem to celkově překopal, ale hádám že do budoucna tohle budu muset řešit.

CZechBoY
Člen | 3608
+
0
-

Jak si to teda nakonec cca obecně vyřešil? :)