container = new Container(); $this->container->instance(Container::class, $this->container); } public function boot(): void { $this->registerServiceProviders(); $this->initializeLogger(); $this->registerPlugin(); // Free informational Supplier page owns only its admin-menu entry. if (class_exists(\TFGraphics\SmartImport\SupplierPortal\EntryPoint::class)) { \TFGraphics\SmartImport\SupplierPortal\EntryPoint::register(); } if (class_exists(\TFGraphics\SmartImport\Support\SupportReportController::class)) { \TFGraphics\SmartImport\Support\SupportReportController::register(); } } protected function registerServiceProviders(): void { $providers = array_merge( self::FOUNDATION_PROVIDER_ORDER, RuntimeProviderCatalog::serviceProviders(), self::FEATURE_PROVIDER_ORDER ); foreach ($providers as $providerClass) { if (! class_exists($providerClass)) { // Skip an unavailable optional provider without production debug output. continue; } $provider = $this->container->make($providerClass); if (! $provider instanceof ServiceProvider) { continue; } $provider->register($this->container); } } protected function initializeLogger(): void { $logger = $this->container->make(Logger::class); $logger->info('ProductGather application initialized.'); } protected function registerPlugin(): void { $plugin = $this->container->make(Plugin::class); $plugin->register(); } public function getContainer(): Container { return $this->container; } }