Configurator – Add different configs based on Module

jeremy
Member | 46
+
0
-

Hi, is it possible to have common config files for all modules and then for each module different configs and load them based on the current module?

Thanks

Marek Bartoš
Nette Blogger | 1165
+
0
-

No, it's not. But depending on what is in these module-specific configs, some other solution probably exists.

jeremy
Member | 46
+
0
-

Here is my config file for services:

services:
- App\Router\RouterFactory::createRouter
- App\Backend\Services\BackendService(
%tempDir%
not(%debugMode%)
@application.application
)
- App\Frontend\Services\FrontendService(
not(%debugMode%)
 )

Now, I'd like to have Backend services only loaded when I am in the Backend Module.
The main reason is that I want to have the ability to create plugins for my app and extend the app's functionality and should those plugins have their own services, it would be nice if I didn't have to write each one in the main config file.

Maybe there is another way?

Thanks

Last edited by jeremy (2022-01-16 17:43)

Marek Bartoš
Nette Blogger | 1165
+
+1
-

Instance of service is not created unless you request that service from DI (via constructor, inject method, …).

Only downside is for each service is generated one method in compiled DI container. But you should not worry about that, compiled DIC can have tens of thousands lines of code and it will not affect performance even slightly.

To split services into multiple files, use include:

includes:
	- Backend/wiring.neon
	- Frontend/wiring.neon

If you plan to have optional plugins (e.g. in vendor directory), bootstrap is the way to go:

$configurator->addConfig(__DIR__ . '/../vendor/example/package/src/wiring.neon');

Last edited by Marek Bartoš (2022-01-16 18:04)

jeremy
Member | 46
+
0
-

Alright, thanks!