Path   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 28
rs 10
c 0
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createFromPath() 0 3 1
A __toString() 0 12 1
1
<?php declare(strict_types=1);
2
3
namespace App\Domain;
4
5
use App\Collection\Collection;
6
use Doctrine\Common\Collections\Criteria;
7
8
/**
9
 * This is a Collection of PathPart, which we can name a "Path" (beware: it is not a Collection of "Paths").
10
 *
11
 * @method static __construct(PathPart[] $elements)
12
 * @method PathPart[] toArray()
13
 * @method PathPart first()
14
 * @method PathPart last()
15
 * @method PathPart next()
16
 * @method PathPart current()
17
 * @method bool removeElement(PathPart $element)
18
 * @method bool contains(PathPart $element)
19
 * @method mixed indexOf(PathPart $element)
20
 * @method PathPart[] getValues()
21
 * @method void set($key, PathPart $element)
22
 * @method bool add(PathPart $element)
23
 * @method \ArrayIterator|PathPart[] getIterator()
24
 * @method PathPart[]|Path map(\Closure $p)
25
 * @method PathPart[]|Path filter(\Closure $p)
26
 * @method Path[] partition(\Closure $p)
27
 * @method PathPart[]|Path matching(Criteria $criteria)
28
 */
29
final class Path extends Collection
30
{
31
    /**
32
     * {@inheritdoc}
33
     */
34
    public function __toString(): string
35
    {
36
        return implode(
37
            DIRECTORY_SEPARATOR,
38
            $this->matching(Criteria::create()->orderBy(array('priority' => Criteria::ASC)))
39
                ->filter(function (PathPart $pathPart) {
40
                    return !empty($pathPart->getPath());
41
                })
42
                ->map(function (PathPart $pathPart) {
43
                    return $pathPart->getPath();
44
                })
45
                ->toArray()
46
        );
47
    }
48
49
    /**
50
     * @param Path $path
51
     *
52
     * @return Path
53
     */
54
    public static function createFromPath(Path $path): Path
55
    {
56
        return clone $path;
57
    }
58
}
59