Passed
Push — master ( 62400b...78a114 )
by Aleksandr
03:25
created

Breadcrumbs::formCrumbs()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 16
rs 9.9
c 0
b 0
f 0
cc 3
nc 3
nop 2
1
<?php
2
3
4
namespace carono\yii2crud;
5
6
7
use yii\helpers\Inflector;
8
9
class Breadcrumbs
10
{
11
    public static $crumbsNamespace = 'app\breadcrumbs';
12
13
    /**
14
     * @param \yii\base\Action $action
15
     * @param array $params
16
     * @return array|mixed
17
     */
18
    public static function formCrumbs($action, $params)
19
    {
20
        $arr = explode('/', Inflector::camel2id($action->controller->getUniqueId()));
21
        $arr[\count($arr) - 1] = Inflector::camelize(ucfirst($arr[\count($arr) - 1]));
22
        $class = static::$crumbsNamespace . '\\' . implode('\\', $arr) . 'Crumbs';
23
        $name = 'crumb' . Inflector::camelize($action->id);
24
        if (method_exists($class, $name)) {
25
            $reflectionMethod = new \ReflectionMethod($class, $name);
26
            $data = [];
27
            foreach ($reflectionMethod->getParameters() as $p) {
28
                $data[] = $params[$p->getName()] ?? null;
29
            }
30
            return array_filter(\call_user_func_array([$class, $name], $data));
31
        }
32
33
        return [];
34
    }
35
}