Completed
Push — master ( 21892f...4d589c )
by Sergey
06:57
created

functions.php ➔ class_uses_recursive()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 7
nc 4
nop 1
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace seregazhuk\PinterestBot;
4
5
/**
6
 * Returns all traits used by a class, its subclasses and trait of their traits.
7
 *
8
 * @param  object|string $class
9
 * @return array
10
 */
11
function class_uses_recursive($class)
12
{
13
    if (is_object($class)) {
14
        $class = get_class($class);
15
    }
16
    $results = [];
17
    foreach (array_merge([$class => $class], class_parents($class)) as $class) {
18
        $results += trait_uses_recursive($class);
19
    }
20
    return array_unique($results);
21
}
22
23
/**
24
 * Returns all traits used by a trait and its traits.
25
 *
26
 * @param  string $trait
27
 * @return array
28
 */
29
function trait_uses_recursive($trait)
30
{
31
    $traits = class_uses($trait);
32
    foreach ($traits as $trait) {
33
        $traits += trait_uses_recursive($trait);
34
    }
35
    return $traits;
36
}
37
38
/**
39
 * Returns array's value by key using dot notation.
40
 *
41
 * @param string $key
42
 * @param array $data
43
 * @param mixed $default
44
 * @return array|bool|mixed
45
 */
46
function get_array_data($key = '', $data, $default = null)
47
{
48
    if (empty($key)) return $data;
49
50
    $indexes = explode('.', $key);
51
52
    $value = $data;
53
54
    foreach ($indexes as $index) {
55
        if (!isset($value[$index])) return $default;
56
57
        $value = $value[$index];
58
    }
59
60
    return $value;
61
}
62