Neos\Flow\Core\ClassLoader::setPackages PHP 메소드

setPackages() 공개 메소드

Sets the available packages
public setPackages ( array $activePackages ) : void
$activePackages array An array of \Neos\Flow\Package\Package objects
리턴 void
    public function setPackages(array $activePackages)
    {
        /** @var Package $package */
        foreach ($activePackages as $packageKey => $package) {
            foreach ($package->getFlattenedAutoloadConfiguration() as $configuration) {
                $this->createNamespaceMapEntry($configuration['namespace'], $configuration['classPath'], $configuration['mappingType']);
            }
            // TODO: Replace with "autoload-dev" usage
            if ($this->considerTestsNamespace) {
                foreach ($package->getNamespaces() as $namespace) {
                    $this->createNamespaceMapEntry($namespace, $package->getPackagePath(), self::MAPPING_TYPE_PSR4);
                }
            }
        }
    }

Usage Example

 /**
  * @test
  */
 public function classesFromOverlayedPsr4PackagesAreOverwritten()
 {
     $this->classLoader = new ClassLoader();
     $mockPackage1 = $this->getMockBuilder(Package::class)->disableOriginalConstructor()->getMock();
     $mockPackage1->expects($this->any())->method('getNamespaces')->will($this->returnValue(['TestPackage\\Foo']));
     $mockPackage1->expects($this->any())->method('getFlattenedAutoloadConfiguration')->will($this->returnValue([['namespace' => 'TestPackage\\Foo', 'classPath' => 'vfs://Test/Packages/Libraries/test/subPackage/src/', 'mappingType' => ClassLoader::MAPPING_TYPE_PSR4]]));
     $mockPackage2 = $this->getMockBuilder(Package::class)->disableOriginalConstructor()->getMock();
     $mockPackage2->expects($this->any())->method('getNamespaces')->will($this->returnValue(['TestPackage']));
     $mockPackage2->expects($this->any())->method('getFlattenedAutoloadConfiguration')->will($this->returnValue([['namespace' => 'TestPackage', 'classPath' => 'vfs://Test/Packages/Libraries/test/mainPackage/src/', 'mappingType' => ClassLoader::MAPPING_TYPE_PSR4]]));
     $packages = [$mockPackage2, $mockPackage1];
     mkdir('vfs://Test/Packages/Libraries/test/subPackage/src/', 0770, true);
     mkdir('vfs://Test/Packages/Libraries/test/mainPackage/src/Foo', 0770, true);
     file_put_contents('vfs://Test/Packages/Libraries/test/subPackage/src/Bar3.php', '<?php ' . __CLASS__ . '::$testClassWasOverwritten = TRUE; ?>');
     file_put_contents('vfs://Test/Packages/Libraries/test/mainPackage/src/Foo/Bar3.php', '<?php ' . __CLASS__ . '::$testClassWasOverwritten = FALSE; ?>');
     $this->classLoader->setPackages($packages);
     $this->classLoader->loadClass('TestPackage\\Foo\\Bar3');
     $this->assertTrue(self::$testClassWasOverwritten);
 }