Particle   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 9
eloc 22
dl 0
loc 51
ccs 26
cts 26
cp 1
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A invalidResult() 0 6 2
A required() 0 3 1
A validate() 0 8 2
A optional() 0 3 1
A getName() 0 2 1
A chain() 0 2 1
1
<?php
2
3
namespace Logikos\Util\Config\Field\Adapter;
4
5
use Logikos\Util\Config\Field;
6
use Logikos\Util\Validation;
7
use Particle\Validator\ValidationResult;
8
9
10
class Particle implements Field {
11
  /**
12
   * @var Particle\Validator
13
   */
14
  private $validator;
15
  private $name;
16
  /**
17
   * @var Particle\Chain
18
   */
19
  private $chain;
20
21 8
  protected function __construct($name, Particle\Validator $validator, Particle\Chain $chain) {
22 8
    $this->validator = $validator;
23 8
    $this->name = $name;
24 8
    $this->chain = $chain;
25 8
  }
26
27 7
  public static function required($name) : Particle {
28 7
    $v = new Particle\Validator();;
29 7
    return new self($name, $v, $v->required($name));
30
  }
31
32 1
  public static function optional($name) : Particle {
33 1
    $v = new Particle\Validator();;
34 1
    return new self($name, $v, $v->optional($name));
35
  }
36
37 2
  public function getName() {
38 2
    return $this->name;
39
  }
40
41 3
  public function validate($value): Validation\Result {
42 3
    $particleResult = $this->validator->validate([
43 3
        $this->name => $value
44
    ]);
45 3
    if ($particleResult->isValid())
46 3
      return new Validation\ValidResult();
47
48 2
    return $this->invalidResult($particleResult);
49
  }
50
51 2
  private function invalidResult(ValidationResult $particleResult) {
52 2
    $messages = [];
53 2
    foreach ($particleResult->getFailures() as $failure) {
54 2
      array_push($messages, $failure->format());
55
    }
56 2
    return new Validation\InvalidResult($messages);
57
  }
58
59 5
  public function chain() {
60 5
    return $this->chain;
61
  }
62
}