Particle::optional()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 3
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 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
}