Contrary to {@link getRepositoryPath()}, this array also contains all
nested repository paths that are mapped by this mapping.
public listRepositoryPaths ( ) : string[] | ||
return | string[] | A list of all mapped repository paths. |
/** * {@inheritdoc} */ public function rollback() { if (!$this->mapping->isLoaded()) { return; } $packageName = $this->containingPackage->getName(); $this->mappings->remove($this->mapping->getRepositoryPath(), $packageName); foreach ($this->mapping->listRepositoryPaths() as $repositoryPath) { $this->mappingsByResource->remove($repositoryPath, $packageName); $this->conflictDetector->release($repositoryPath, $packageName); } // Unload after iterating, otherwise the paths are gone $this->mapping->unload(); }
/** * {@inheritdoc} */ public function rollback() { if ($this->mapping->isLoaded() || !$this->containingModule) { return; } $this->mapping->load($this->containingModule, $this->modules); $moduleName = $this->containingModule->getName(); foreach ($this->mapping->listRepositoryPaths() as $repositoryPath) { $this->mappings->add($this->mapping); $this->conflictDetector->claim($repositoryPath, $moduleName); } // Restore conflicts foreach ($this->conflicts as $repositoryPath => $conflict) { $conflict->addMappings($this->conflictingMappings[$repositoryPath]); } }
public function testLoadReferencesToOtherPackage() { $mapping = new PathMapping('/path', '@vendor/package2:resources'); $this->assertSame(array('@vendor/package2:resources'), $mapping->getPathReferences()); $this->assertFalse($mapping->isLoaded()); $mapping->load($this->package1, $this->packages); $this->assertSame(array('@vendor/package2:resources'), $mapping->getPathReferences()); $this->assertSame(array($this->packageDir2 . '/resources'), $mapping->getFilesystemPaths()); $this->assertSame(array($this->packageDir2 . '/resources' => '/path', $this->packageDir2 . '/resources/config' => '/path/config', $this->packageDir2 . '/resources/config/config.yml' => '/path/config/config.yml', $this->packageDir2 . '/resources/css' => '/path/css', $this->packageDir2 . '/resources/css/style.css' => '/path/css/style.css'), $mapping->listPathMappings()); $this->assertSame(array('/path', '/path/config', '/path/config/config.yml', '/path/css', '/path/css/style.css'), $mapping->listRepositoryPaths()); $this->assertSame(array(), $mapping->getLoadErrors()); $this->assertSame($this->package1, $mapping->getContainingPackage()); $this->assertTrue($mapping->isLoaded()); }