AddressValidation   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
eloc 9
c 1
b 0
f 0
dl 0
loc 38
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 3
A getValidations() 0 3 1
A validate() 0 4 2
1
<?php
2
3
namespace Hryvinskyi\QuoteAddressValidator\Model;
4
5
use Magento\Quote\Api\Data\AddressInterface;
6
7
class AddressValidation implements AddressValidationInterface
8
{
9
    /**
10
     * @var ValidationInterface[]
11
     */
12
    private $validations = [];
13
14
    /**
15
     * @param ValidationInterface[] $validations
16
     */
17
    public function __construct(array $validations = [])
18
    {
19
        // check if all validations are instances of ValidationInterface
20
        foreach ($validations as $validation) {
21
            if (!$validation instanceof ValidationInterface) {
22
                throw new \InvalidArgumentException('All validations must be instances of ValidationInterface');
23
            }
24
        }
25
26
        $this->validations = $validations;
27
    }
28
29
    /**
30
     * @inheritDoc
31
     */
32
    public function validate(AddressInterface $address): void
33
    {
34
        foreach ($this->getValidations() as $validation) {
35
            $validation->execute($address);
36
        }
37
    }
38
39
    /**
40
     * @inheritDoc
41
     */
42
    public function getValidations(): array
43
    {
44
        return $this->validations;
45
    }
46
}
47