enum_docblock()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 9
nc 3
nop 1
dl 0
loc 18
ccs 9
cts 9
cp 1
crap 3
rs 9.9666
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Nelexa;
5
6
/**
7
 * Generates an enum php doc block for describing static methods.
8
 *
9
 * @param Enum|string $enumOrEnumClass the enum instance or string enum class name
10
 * @return string php doc block for enum class
11
 */
12
function enum_docblock($enumOrEnumClass): string
13
{
14 2
    if (!is_a($enumOrEnumClass, Enum::class, true)) {
15 1
        throw new \InvalidArgumentException(sprintf(
16 1
            'Expected object or class name that is a descendant of the %s class.',
17 1
            Enum::class
18
        ));
19
    }
20
21 1
    $docBlock = '/**' . PHP_EOL;
22
    /**
23
     * @var Enum $enum
24
     */
25 1
    foreach (call_user_func([$enumOrEnumClass, 'values']) as $enum) {
26 1
        $docBlock .= ' * @method static self ' . $enum->name() . '()' . PHP_EOL;
27
    }
28 1
    $docBlock .= ' */' . PHP_EOL;
29 1
    return $docBlock;
30
}
31