Completed
Push — master ( ecbf0c...c8753a )
by Ron
02:19
created

ConditionDefinition::addAsArray()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 2
nc 2
nop 3
1
<?php
2
namespace Kir\MySQL\Builder\Traits;
3
4
use Closure;
5
use Kir\MySQL\Builder\Expr\OptionalExpression;
6
7
trait ConditionDefinition {
8
	/**
9
	 * @param Closure $addFn
10
	 * @param string|array|object|OptionalExpression $expression
11
	 * @param mixed[] $args
12
	 * @return $this
13
	 */
14
	protected function addCondition(Closure $addFn, $expression, ...$args) {
15
		if($expression instanceof OptionalExpression) {
16
			if($expression->isValid()) {
17
				$addFn($expression->getExpression(), $expression->getValue());
18
			}
19
		} elseif(is_object($expression)) {
20
			$this->addAsArray($addFn, (array) $expression, $args);
21
		} elseif(is_array($expression)) {
22
			$this->addAsArray($addFn, $expression, $args);
23
		} else {
24
			$addFn($expression, $args);
25
		}
26
		return $this;
27
	}
28
29
	/**
30
	 * @param Closure $addFn
31
	 * @param array $expression
32
	 * @param array $args
33
	 */
34
	private function addAsArray(Closure $addFn, array $expression, array $args) {
35
		if(count($expression) > 0) {
36
			$addFn($expression, $args);
37
		}
38
	}
39
}
40