/** * Inject a package into available configuration. * * @param string $package Package name * @param array $metadata Package metadata with potential injections. * @param Injector\InjectorInterface $injector Injector to use. * @return void */ private function injectPackageIntoConfig($package, array $metadata, Injector\InjectorInterface $injector) { foreach ($this->packageTypes as $type => $key) { if (!$injector->registersType($type)) { continue; } if (!$this->metadataKeyIsValid($key, $metadata)) { continue; } $this->io->write(sprintf('<info>Installing %s from package %s</info>', $metadata[$key], $package)); $injector->inject($metadata[$key], $type, $this->io); } }
/** * Inject a module into available configuration. * * @param string $package Package name * @param string $module Module to install in configuration * @param Injector\InjectorInterface $injector Injector to use. * @param Collection $packageTypes * @return void */ private function injectModuleIntoConfig($package, $module, Injector\InjectorInterface $injector, Collection $packageTypes) { // Find the first package type the injector can handle. $type = $packageTypes->reduce(function ($discovered, $type) use($injector) { if ($discovered) { return $discovered; } $discovered = $injector->registersType($type) ? $type : $discovered; return $discovered; }, false); $this->io->write(sprintf('<info>Installing %s from package %s</info>', $module, $package)); $injector->inject($module, $type, $this->io); }