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

InheritanceMiddleware::getClassConfig()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 8
nc 3
nop 3
dl 0
loc 15
rs 9.4285
c 0
b 0
f 0
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