Configurable::loadConfig()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 5
c 1
b 0
f 0
dl 0
loc 9
rs 10
cc 3
nc 3
nop 1
1
<?php
2
3
namespace Itstructure\GridView\Traits;
4
5
use ReflectionClass;
6
7
/**
8
 * Class Configurable
9
 * @package Itstructure\GridView\Traits
10
 */
11
trait Configurable
12
{
13
    /**
14
     * @param array $config
15
     */
16
    public function loadConfig(array $config = [])
17
    {
18
        $attributes = $this->attributes();
19
20
        foreach ($config as $key => $value) {
21
            if (!in_array($key, $attributes)) {
22
                continue;
23
            }
24
            $this->{$key} = $value;
25
        }
26
    }
27
28
    /**
29
     * @return array
30
     */
31
    protected function attributes()
32
    {
33
        $class = new ReflectionClass($this);
34
        $names = [];
35
        foreach ($class->getProperties() as $property) {
36
            if (!$property->isStatic()) {
37
                $names[] = $property->getName();
38
            }
39
        }
40
41
        return $names;
42
    }
43
}
44