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

ConditionDefinition   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
eloc 13
c 1
b 0
f 0
dl 0
loc 30
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A addAsArray() 0 3 2
A addCondition() 0 13 5
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