Code Duplication    Length = 21-22 lines in 2 locations

src/ArrayTools/RecursiveAccessor.php 2 locations

@@ 19-40 (lines=22) @@
16
     * @return mixed
17
     * @throws \InvalidArgumentException
18
     */
19
    public static function readSingleFromPath($array, $path)
20
    {
21
        if (self::isInvalidPath($path)) {
22
            return null;
23
        }
24
25
        $path = explode('.', $path);
26
        $lastKey = array_pop($path);
27
        $pointer = &$array;
28
29
        foreach ($path as $newPosition) {
30
            if (!isset($pointer[$newPosition]) || !is_array($pointer[$newPosition])) {
31
                unset($pointer);
32
                return null;
33
            }
34
            $pointer = &$pointer[$newPosition];
35
        }
36
37
        $value = $pointer[$lastKey];
38
        unset($pointer);
39
        return $value;
40
    }
41
42
    private static function isInvalidPath($path)
43
    {
@@ 79-99 (lines=21) @@
76
     * @param string $type
77
     * @return null
78
     */
79
    public static function castInPath(&$array, $path, $type)
80
    {
81
        if (self::isInvalidPath($path)) {
82
            return;
83
        }
84
85
        $path = explode('.', $path);
86
        $lastKey = array_pop($path);
87
        $pointer = &$array;
88
89
        foreach ($path as $newPosition) {
90
            if (!isset($pointer[$newPosition]) || !is_array($pointer[$newPosition])) {
91
                unset($pointer);
92
                return;
93
            }
94
            $pointer = &$pointer[$newPosition];
95
        }
96
97
        settype($pointer[$lastKey], $type);
98
        unset($pointer);
99
    }
100
101
    /**
102
     * The writeNestedValue function is simply (over)writing data to arrays, this one tries to merge data when possible