*/ private array $providers = []; public function __construct(private readonly ConfigInterface $config) { } public function load(): void { $this->providers = []; $core = (array) Config::get('providers.core', []); $app = (array) Config::get('providers.app', []); $modules = (array) Config::get('providers.modules', []); foreach ([$core, $app, $modules] as $group) { foreach ($group as $class) { if (is_string($class) && class_exists($class)) { $instance = new $class(); if ($instance instanceof ServiceProviderInterface) { $this->providers[] = $instance; } } } } } public function registerAll(ContainerBuilder $builder): void { foreach ($this->providers as $provider) { $provider->register($builder, $this->config); } } public function bootAll(Container $container): void { foreach ($this->providers as $provider) { $provider->boot($container); } } }