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

BaseAlias::addMultiple()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 6
c 1
b 0
f 0
nc 3
nop 1
dl 0
loc 12
rs 10
ccs 7
cts 7
cp 1
crap 3
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