Passed
Pull Request — master (#7800)
by Maxime
09:37
created

BaseAlias::add()   A

Complexity

Conditions 6
Paths 3

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 6.1666

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 6
eloc 5
c 1
b 0
f 0
nc 3
nop 2
dl 0
loc 11
rs 9.2222
ccs 5
cts 6
cp 0.8333
crap 6.1666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\ORM\Query\Expr;
6
7
use InvalidArgumentException;
8
use function is_array;
9
use function is_string;
10
use function sprintf;
11
12
/**
13
 * Abstract base Expr class for building DQL parts.
14
 */
15
abstract class BaseAlias extends Base
16
{
17
    /**
18
     * @param mixed $args
19
     *
20
     * @return Base
21
     */
22 120
    public function addMultiple($args = [])
23
    {
24 120
        foreach ((array) $args as $alias => $arg) {
25 120
            if (is_string($alias)) {
26 2
                $this->add($arg, $alias);
27
28 2
                continue;
29
            }
30 119
            parent::add($arg);
31
        }
32
33 120
        return $this;
34
    }
35
36
    /**
37
     * @param mixed       $arg
38
     * @param string|null $alias
39
     *
40
     * @return Base
41
     *
42
     * @throws InvalidArgumentException
43
     */
44 2
    public function add($arg, $alias = null)
45
    {
46 2
        if ($alias !== null && is_array($arg) && (! $arg instanceof self || $arg->count() > 0)) {
47 2
            foreach ($arg as $v) {
48 2
                parent::add(sprintf('%s.%s', $alias, $v));
49
            }
50
51 2
            return $this;
52
        }
53
54
        return parent::add($arg);
55
    }
56
}
57