Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
9 / 9 |
CRAP | |
100.00% |
22 / 22 |
| Directory | |
100.00% |
1 / 1 |
|
100.00% |
9 / 9 |
12 | |
100.00% |
22 / 22 |
| __construct($basename) | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
| addDirectory(Directory $directory) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| addFile(File $file) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| addLink(Link $link) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| addNode(Node $node) | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
|||
| size() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| childAt($path) | |
100.00% |
1 / 1 |
2 | |
100.00% |
3 / 3 |
|||
| remove($basename) | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| children() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| <?php | |
| /* | |
| * This file is part of the php-vfs package. | |
| * | |
| * (c) Michael Donat <michael.donat@me.com> | |
| * | |
| * For the full copyright and license information, please view the LICENSE | |
| * file that was distributed with this source code. | |
| */ | |
| namespace VirtualFileSystem\Structure; | |
| use VirtualFileSystem\FileExistsException; | |
| use VirtualFileSystem\NotFoundException; | |
| /** | |
| * FileSystem Directory representation. | |
| * | |
| * @author Michael Donat <michael.donat@me.com> | |
| * @package php-vfs | |
| */ | |
| class Directory extends Node | |
| { | |
| /** | |
| * @see http://man7.org/linux/man-pages/man2/lstat.2.html | |
| */ | |
| const S_IFTYPE = 0040000; | |
| protected $children = array(); | |
| /** | |
| * Class constructor. | |
| * | |
| * @param string $basename | |
| * | |
| * @throws \InvalidArgumentException | |
| */ | |
| public function __construct($basename) | |
| { | |
| if ($basename == Root::BASENAME) { | |
| throw new \InvalidArgumentException('Creating directories as root is prohibited'); | |
| } | |
| parent::__construct($basename); | |
| } | |
| /** | |
| * Adds child Directory. | |
| * | |
| * @param Directory $directory | |
| */ | |
| public function addDirectory(Directory $directory) | |
| { | |
| $this->addNode($directory); | |
| } | |
| /** | |
| * Adds child File. | |
| * | |
| * @param File $file | |
| */ | |
| public function addFile(File $file) | |
| { | |
| $this->addNode($file); | |
| } | |
| /** | |
| * Adds child Link. | |
| * | |
| * @param Link $link | |
| */ | |
| public function addLink(Link $link) | |
| { | |
| $this->addNode($link); | |
| } | |
| /** | |
| * Adds child Node. | |
| * | |
| * @param Node $node | |
| * | |
| * @throws FileExistsException | |
| */ | |
| public function addNode(Node $node) | |
| { | |
| if (array_key_exists($node->basename(), $this->children)) { | |
| throw new FileExistsException(sprintf('%s already exists', $node->basename())); | |
| } | |
| $this->children[$node->basename()] = $node; | |
| $node->setParent($this); | |
| } | |
| /** | |
| * Returns size as the number of child elements. | |
| * | |
| * @return int | |
| */ | |
| public function size() | |
| { | |
| return count($this->children); | |
| } | |
| /** | |
| * Returns child Node existing at path. | |
| * | |
| * @param string $path | |
| * | |
| * @return Node | |
| * | |
| * @throws \VirtualFileSystem\NotFoundException | |
| */ | |
| public function childAt($path) | |
| { | |
| if (!array_key_exists($path, $this->children)) { | |
| throw new NotFoundException(sprintf('Could not find child %s in %s', $path, $this->path())); | |
| } | |
| return $this->children[$path]; | |
| } | |
| /** | |
| * Removes child Node | |
| * | |
| * @param string $basename | |
| */ | |
| public function remove($basename) | |
| { | |
| unset($this->children[$basename]); | |
| } | |
| /** | |
| * Returns children | |
| * | |
| * @return array | |
| */ | |
| public function children() | |
| { | |
| return $this->children; | |
| } | |
| } |