EnumTrait   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 1
dl 0
loc 43
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A fetchEnums() 0 9 3
A formatEnumValues() 0 21 1
1
<?php
2
3
/**
4
 * @author Roman Varkuta <[email protected]>
5
 * @license MIT
6
 * @see https://github.com/myclabs/php-enum PHP enum implementation
7
 * @version 1.0
8
 */
9
10
declare(strict_types=1);
11
12
namespace Kartavik\Yii2\Database;
13
14
use MyCLabs\Enum\Enum;
15
16
/**
17
 * Trait EnumTrait
18
 * @package Kartavik\Yii2\Database
19
 */
20
trait EnumTrait
21
{
22
    /**
23
     * @param iterable|string|Enum|null $enums
24
     *
25
     * @return array
26
     */
27
    private function fetchEnums($enums): array
28
    {
29
        if (\is_string($enums) && \in_array(Enum::class, \class_parents($enums))) {
30
            /** @var Enum $enums */
31
            $enums = $enums::toArray();
32
        }
33
34
        return (array)$enums;
35
    }
36
37
    /**
38
     * @param iterable $values
39
     * @return string
40
     */
41
    private function formatEnumValues(iterable $values): string
42
    {
43
        $values = \implode(
44
            ', ',
45
            \array_map(
46
                function ($value) {
47
                    return "'{$value}'";
48
                },
49
                \array_filter(
50
                    \array_map(function ($value) {
51
                        return (string)$value;
52
                    }, (array)$values),
53
                    function ($value) {
54
                        return !empty($value);
55
                    }
56
                )
57
            )
58
        );
59
60
        return "ENUM({$values})";
61
    }
62
}
63