/** * Sets class loading information for a package for the current web request * * @param PackageInterface $package * @throws \TYPO3\CMS\Core\Error\Exception */ public static function registerTransientClassLoadingInformationForPackage(PackageInterface $package) { $composerClassLoader = static::getClassLoader(); $classInformation = ClassLoadingInformationGenerator::buildClassLoadingInformationForPackage($package); $composerClassLoader->addClassMap($classInformation['classMap']); foreach ($classInformation['psr-4'] as $prefix => $paths) { $composerClassLoader->setPsr4($prefix, $paths); } $classAliasMap = ClassLoadingInformationGenerator::buildClassAliasMapForPackage($package); if (is_array($classAliasMap) && !empty($classAliasMap['aliasToClassNameMapping']) && !empty($classAliasMap['classNameToAliasMapping'])) { self::getClassAliasLoader($composerClassLoader)->addAliasMap($classAliasMap); } }
/** * @test * @dataProvider autoloadDevFilesAreBuildCorrectlyDataProvider * * @param array $packageManifest * @param array $expectedPsr4Files * @param array $expectedClassMapFiles */ public function autoloadDevFilesAreBuildCorrectly($packageManifest, $expectedPsr4Files, $expectedClassMapFiles) { /** @var ClassLoader|\PHPUnit_Framework_MockObject_MockObject $classLoaderMock */ $classLoaderMock = $this->getMock(ClassLoader::class); $generator = new ClassLoadingInformationGenerator($classLoaderMock, [$this->createPackageMock($packageManifest)], __DIR__, true); $files = $generator->buildAutoloadInformationFiles(); $this->assertArrayHasKey('psr-4File', $files); $this->assertArrayHasKey('classMapFile', $files); foreach ($expectedPsr4Files as $expectation) { if ($expectation[0] === '!') { $expectedCount = 0; } else { $expectedCount = 1; } $this->assertSame($expectedCount, substr_count($files['psr-4File'], $expectation), '' . $expectation); } foreach ($expectedClassMapFiles as $expectation) { if ($expectation[0] === '!') { $expectedCount = 0; } else { $expectedCount = 1; } $this->assertSame($expectedCount, substr_count($files['classMapFile'], $expectation), '' . $expectation); } }
/** * Sets class loading information for a package for the current web request * * @param PackageInterface $package * @throws \TYPO3\CMS\Core\Error\Exception */ public static function registerTransientClassLoadingInformationForPackage(PackageInterface $package) { $composerClassLoader = static::getClassLoader(); $classInformation = ClassLoadingInformationGenerator::buildClassLoadingInformationForPackage($package); $composerClassLoader->addClassMap($classInformation['classMap']); foreach ($classInformation['psr-4'] as $prefix => $paths) { $composerClassLoader->setPsr4($prefix, $paths); } if (is_callable(array($composerClassLoader, 'addAliasMap'))) { $aliasMap = ClassLoadingInformationGenerator::buildClassAliasMapForPackage($package); $composerClassLoader->addAliasMap($aliasMap); } }