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

Breadcrumbs   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 13
dl 0
loc 25
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A formCrumbs() 0 16 3
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
}