CardSchemeStrategy::generateArguments()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 6
ccs 4
cts 4
cp 1
crap 1
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 *  This file is part of the Micro framework package.
7
 *
8
 *  (c) Stanislau Komar <[email protected]>
9
 *
10
 *  For the full copyright and license information, please view the LICENSE
11
 *  file that was distributed with this source code.
12
 */
13
14
namespace Micro\Library\DTO\Preparation\Processor\Property\Assert;
15
16
use Symfony\Component\Validator\Constraints\CardScheme;
17
18
class CardSchemeStrategy extends AbstractConstraintStrategy
19
{
20 1
    protected function generateArguments(array $config): array
21
    {
22 1
        $parent = parent::generateArguments($config);
23 1
        $parent['schemes'] = $this->extractSchemes($config);
24
25 1
        return array_filter($parent);
26
    }
27
28
    /**
29
     * @param array<string, mixed> $config
30
     *
31
     * @return array<string>|null
32
     */
33 1
    protected function extractSchemes(array $config): array|null
34
    {
35 1
        $schemes = $this->explodeString($config['schemes'] ?? '');
36 1
        if (!$schemes) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $schemes of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
37
            return null;
38
        }
39
40 1
        $result = [];
41 1
        foreach ($schemes as $schemaName) {
42 1
            $s = \constant(sprintf('%s::%s', CardScheme::class, $schemaName));
43 1
            $result[] = $s ?: $schemaName;
44
        }
45
46 1
        return $result;
47
    }
48
49 1
    protected function getValidatorProperty(): string
50
    {
51 1
        return 'card_scheme';
52
    }
53
54 1
    protected function getAttributeClassName(): string
55
    {
56 1
        return CardScheme::class;
57
    }
58
}
59