registerService('httpClient', function () { $options = [ 'ipv4' => true, ]; return Client::create($options); }); $context->registerService('crawler', function () { return new Crawler(); }); $sites = Helper::getSearchSites(); foreach ($sites as $site) { //fully qualified class name $className = $site['class']; $context->registerService($className, function (ContainerInterface $container) use ($className) { $crawler = $container->get('crawler'); $client = $container->get('httpClient'); return $className::create($crawler, $client); }); } } public function boot(IBootContext $c): void { $user = Helper::getUser(); $uid = ($user) ? $user->getUID() : ''; //$settings = new Settings($uid); //$userFolder = Helper::getUserFolder($uid); $context = $c->getAppContainer(); $context->registerService(Aria2::class, function (ContainerInterface $c) use ($uid) { $config = Helper::getAria2Config($uid); return new Aria2($config); }); $context->registerService(Ytdl::class, function (ContainerInterface $c) use ($uid) { $config = Helper::getYtdlConfig($uid); return new Ytdl($config); }); $context->registerService(Settings::class, function (ContainerInterface $c) use ($uid){ return new Settings($uid); }); //$context->injectFn([$this, 'registerSearchProviders']); } }