Completed
Push — master ( deca00...5388ff )
by Sam
24s
created

InheritanceMiddleware   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
dl 0
loc 28
rs 10
c 0
b 0
f 0
wmc 3
lcom 0
cbo 3

1 Method

Rating   Name   Duplication   Size   Complexity  
A getClassConfig() 0 15 3
1
<?php
2
3
namespace SilverStripe\Core\Config\Middleware;
4
5
use SilverStripe\Config\MergeStrategy\Priority;
6
use SilverStripe\Config\Middleware\Middleware;
7
use SilverStripe\Core\ClassInfo;
8
9
class InheritanceMiddleware implements Middleware
10
{
11
    use MiddlewareCommon;
12
13
    /**
14
     * Get config for a class
15
     *
16
     * @param string $class Name of class
17
     * @param int|true $excludeMiddleware Middleware disable flags
18
     * @param callable $next Callback to next middleware
19
     * @return array Complete class config
20
     */
21
    public function getClassConfig($class, $excludeMiddleware, $next)
22
    {
23
        // Check if enabled
24
        if (!$this->enabled($excludeMiddleware)) {
25
            return $next($class, $excludeMiddleware);
26
        }
27
28
        // Merge hierarchy
29
        $config = [];
30
        foreach (ClassInfo::ancestry($class) as $nextClass) {
31
            $nextConfig = $next($nextClass, $excludeMiddleware);
32
            $config = Priority::mergeArray($nextConfig, $config);
33
        }
34
        return $config;
35
    }
36
}
37