/** * @test */ public function buildClassAliasMapForPackageReturnsClassAliasMapForComposerManifestInformation() { $expectedClassMap = ['aliasToClassNameMapping' => ['foo' => Fixtures\test_extension\Resources\PHP\Test::class, 'bar' => Fixtures\test_extension\Resources\PHP\AnotherTestFile::class], 'classNameToAliasMapping' => [Fixtures\test_extension\Resources\PHP\Test::class => ['foo' => 'foo'], Fixtures\test_extension\Resources\PHP\AnotherTestFile::class => ['bar' => 'bar']]]; $packageMock = $this->createPackageMock(['extra' => ['typo3/class-alias-loader' => ['class-alias-maps' => ['Resources/PHP/ClassAliasMap.php']]]]); /** @var ClassLoader|\PHPUnit_Framework_MockObject_MockObject $classLoaderMock */ $classLoaderMock = $this->getMock(ClassLoader::class); $generator = new ClassLoadingInformationGenerator($classLoaderMock, [], __DIR__); $this->assertEquals($expectedClassMap, $generator->buildClassAliasMapForPackage($packageMock)); }
/** * 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); } }
/** * 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); } }