public function listChildren()
{
$children = new FilesystemResourceCollection();
// Use attached repository if possible
if ($this->getRepository()) {
foreach ($this->getRepository()->listChildren($this->getRepositoryPath()) as $child) {
$children[$child->getName()] = $child;
}
return $children;
}
$iterator = new RecursiveDirectoryIterator($this->getFilesystemPath(), RecursiveDirectoryIterator::CURRENT_AS_PATHNAME | RecursiveDirectoryIterator::SKIP_DOTS);
// We can't use glob() here, because glob() doesn't list files starting
// with "." by default
foreach ($iterator as $path) {
$children[basename($path)] = is_dir($path) ? new self($path) : new FileResource($path);
}
return $children;
}
public function testListChildrenDetached() { $resource = new DirectoryResource($this->fixturesDir . '/dir1'); $children = $resource->listChildren(); $this->assertCount(2, $children); $this->assertInstanceOf('Puli\\Repository\\Resource\\Collection\\FilesystemResourceCollection', $children); $this->assertEquals(new FileResource($this->fixturesDir . '/dir1/file1'), $children['file1']); $this->assertEquals(new FileResource($this->fixturesDir . '/dir1/file2'), $children['file2']); }