NodeSimplifierFactory   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 7

Test Coverage

Coverage 100%

Importance

Changes 6
Bugs 0 Features 4
Metric Value
wmc 3
c 6
b 0
f 4
lcom 0
cbo 7
dl 0
loc 40
ccs 20
cts 20
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A newNodeSimplifier() 0 3 1
A buildNodeSimplifier() 0 18 1
1
<?php
2
3
namespace PPP\Module\TreeSimplifier;
4
5
/**
6
 * Build a NodeSimplifier for query trees
7
 *
8
 * @licence MIT
9
 * @author Thomas Pellissier Tanon
10
 */
11
class NodeSimplifierFactory {
12
13
	/**
14
	 * @var NodeSimplifier
15
	 */
16
	private $nodeSimplifier;
17
18
	/**
19
	 * @param NodeSimplifier[] $additionalSimplifiers
20
	 */
21 1
	public function __construct(array $additionalSimplifiers = array()) {
22 1
		$this->nodeSimplifier = $this->buildNodeSimplifier($additionalSimplifiers);
23 1
	}
24
25 1
	private function buildNodeSimplifier(array $additionalSimplifiers) {
26 1
		return new DispatchingSimplifier(
27 1
			array_merge(
28
				array(
29 1
					new SetOperatorNodeSimplifier()
30 1
				),
31 1
				$additionalSimplifiers,
32
				array(
33 1
					new FirstNodeSimplifier($this),
34 1
					new LastNodeSimplifier($this),
35 1
					new RecursiveOperatorNodeSimplifier($this),
36 1
					new SetOperatorNodeSimplifier(),
37 1
					new RecursiveSortNodeSimplifier($this),
38 1
					new RecursiveTripleNodeSimplifier($this)
39 1
				)
40 1
			)
41 1
		);
42
	}
43
44
	/**
45
	 * @return NodeSimplifier
46
	 */
47 1
	public function newNodeSimplifier() {
48 1
		return $this->nodeSimplifier;
49
	}
50
}
51