private function registerAutoloader($package) { $generator = new AutoloadGenerator(new EventDispatcher($this->composer, $this->io)); $map = $generator->parseAutoloads(array(array($package, $this->getInstallPath($package))), new Package('dummy', '1.0.0.0', '1.0.0')); $classLoader = $generator->createLoader($map); $classLoader->register(); }
/** * @param string $baseDir Root directory of composer package. */ public function __construct($baseDir) { $this->baseDir = $baseDir; $io = new NullIO(); $this->composer = (new Factory())->createComposer($io, $baseDir . '/composer.json', true, $baseDir, false); $generator = new AutoloadGenerator($this->composer->getEventDispatcher(), $io); $generator->setDevMode(true); $packages = $this->composer->getRepositoryManager()->getLocalRepository()->getPackages(); $packageMap = $generator->buildPackageMap($this->composer->getInstallationManager(), $this->composer->getPackage(), $packages); $packageMap[0][1] = $baseDir; // To make root package paths absolute too. $autoloads = $generator->parseAutoloads($packageMap, $this->composer->getPackage()); $this->classLoader = $generator->createLoader($autoloads); }
private function registerInstaller(PackageInterface $package) { $downloadPath = $this->getInstallPath($package); $extra = $package->getExtra(); $class = $extra['class']; $generator = new AutoloadGenerator(); $map = $generator->parseAutoloads(array(array($package, $downloadPath))); $classLoader = $generator->createLoader($map); $classLoader->register(); if (class_exists($class, false)) { $code = file_get_contents($classLoader->findFile($class)); $code = preg_replace('{^class\\s+(\\S+)}mi', 'class $1_composer_tmp' . self::$classCounter, $code); eval('?>' . $code); $class .= '_composer_tmp' . self::$classCounter; self::$classCounter++; } $extra = $package->getExtra(); $installer = new $class($this->vendorDir, $this->binDir, $this->downloadManager, $this->io); $this->installationManager->addInstaller($installer); }
/** * @param Event $event Event object * @return array Listeners */ protected function getListeners(Event $event) { $package = $this->composer->getPackage(); $scripts = $package->getScripts(); if (empty($scripts[$event->getName()])) { return array(); } if ($this->loader) { $this->loader->unregister(); } $generator = new AutoloadGenerator(); $packages = $this->composer->getRepositoryManager()->getLocalRepository()->getPackages(); $packageMap = $generator->buildPackageMap($this->composer->getInstallationManager(), $package, $packages); $map = $generator->parseAutoloads($packageMap); $this->loader = $generator->createLoader($map); $this->loader->register(); return $scripts[$event->getName()]; }