Completed
Push — master ( 0b8037...4f7635 )
by Ron
01:44
created

ConditionAddHelper   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A addAsArray() 0 3 2
A addCondition() 0 11 5
1
<?php
2
namespace Kir\MySQL\Builder\Helpers;
3
4
use Closure;
5
use Kir\MySQL\Builder\Expr\OptionalExpression;
6
7
abstract class ConditionAddHelper {
8
	/**
9
	 * @param Closure $addFn
10
	 * @param string|array|object|OptionalExpression $expression
11
	 * @param mixed[] $args
12
	 */
13
	public static function addCondition(Closure $addFn, $expression, ...$args) {
14
		if($expression instanceof OptionalExpression) {
15
			if($expression->isValid()) {
16
				$addFn($expression->getExpression(), $expression->getValue());
17
			}
18
		} elseif(is_object($expression)) {
19
			self::addAsArray($addFn, (array) $expression, $args);
20
		} elseif(is_array($expression)) {
21
			self::addAsArray($addFn, $expression, $args);
22
		} else {
23
			$addFn($expression, $args);
24
		}
25
	}
26
27
	/**
28
	 * @param Closure $addFn
29
	 * @param array $expression
30
	 * @param array $args
31
	 */
32
	private static function addAsArray(Closure $addFn, array $expression, array $args) {
33
		if(count($expression) > 0) {
34
			$addFn($expression, $args);
35
		}
36
	}
37
}
38