Completed
Push — master ( a0b3b9...8a68c3 )
by Andreas
04:01
created

ClassMapList   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 120
Duplicated Lines 0 %

Coupling/Cohesion

Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 4
Bugs 0 Features 2
Metric Value
wmc 10
c 4
b 0
f 2
cbo 1
dl 0
loc 120
ccs 29
cts 29
cp 1
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A current() 0 4 1
A next() 0 4 1
A key() 0 4 1
A valid() 0 4 1
A rewind() 0 4 1
A add() 0 15 2
A clear() 0 4 1
A count() 0 4 1
A toArray() 0 4 1
1
<?php
2
/**
3
 * Copyright (c)2014-2014 heiglandreas
4
 * 
5
 * Permission is hereby granted, free of charge, to any person obtaining a copy
6
 * of this software and associated documentation files (the "Software"), to deal
7
 * in the Software without restriction, including without limitation the rights
8
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
 * copies of the Software, and to permit persons to whom the Software is
10
 * furnished to do so, subject to the following conditions:
11
 *
12
 * The above copyright notice and this permission notice shall be included in
13
 * all copies or substantial portions of the Software.
14
 * 
15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
 * LIBILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
 * THE SOFTWARE.
22
 *
23
 * @category 
24
 * @author    Andreas Heigl<[email protected]>
25
 * @copyright ©2014-2014 Andreas Heigl
26
 * @license   http://www.opesource.org/licenses/mit-license.php MIT-License
27
 * @version   0.0
28
 * @since     06.11.14
29
 * @link      https://github.com/heiglandreas/OrgHeiglFileFinder
30
 */
31
32
namespace Org_Heigl\FileFinder;
33
34
35
class ClassMapList implements FileListInterface, \Countable
36
{
37
    protected $list = array();
38
39
    /**
40
     * Return the current element
41
     *
42
     * @link http://php.net/manual/en/iterator.current.php
43
     * @return mixed Can return any type.
44
     */
45 1
    public function current()
46
    {
47 1
        return current($this->list);
48
    }
49
50
    /**
51
     * Move forward to next element
52
     *
53
     * @link http://php.net/manual/en/iterator.next.php
54
     * @return void Any returned value is ignored.
55
     */
56 1
    public function next()
57
    {
58 1
        next($this->list);
59 1
    }
60
61
    /**
62
     * Return the key of the current element
63
     *
64
     * @link http://php.net/manual/en/iterator.key.php
65
     * @return mixed scalar on success, or null on failure.
66
     */
67 1
    public function key()
68
    {
69 1
        return key($this->list);
70
    }
71
72
    /**
73
     * (PHP 5 &gt;= 5.0.0)<br/>
74
     * Checks if current position is valid
75
     *
76
     * @link http://php.net/manual/en/iterator.valid.php
77
     * @return boolean The return value will be casted to boolean and then evaluated.
78
     *       Returns true on success or false on failure.
79
     */
80 1
    public function valid()
81
    {
82 1
        return false !== $this->current();
83
    }
84
85
    /**
86
     * (PHP 5 &gt;= 5.0.0)<br/>
87
     * Rewind the Iterator to the first element
88
     *
89
     * @link http://php.net/manual/en/iterator.rewind.php
90
     * @return void Any returned value is ignored.
91
     */
92 1
    public function rewind()
93
    {
94 1
        reset($this->list);
95 1
    }
96
97
    /**
98
     * Add an SPL-File-Info to the filelist
99
     *
100
     * @param \SplFileInfo $file
101
     *
102
     * @return void
103
     */
104 4
    public function add(\SplFileInfo $file)
105
    {
106 4
        $content = new \Org_Heigl\FileFinder\Service\Tokenlist(file_get_contents($file->getPathname()));
107 4
        $classname = $content->getClassName();
108 4
        if (! $classname) {
109 1
            return;
110
        }
111
112 4
        $class = $content->getNamespace();
113 4
        $class[] = $classname;
114
115 4
        $key = str_replace('\\\\', '\\', '\\' . implode('\\', $class));
116
117 4
        $this->list[$key] = realpath($file->getPathname());
118 4
    }
119
120
    /**
121
     * Clear all entries from the filelist
122
     *
123
     * @return void
124
     */
125 3
    public function clear()
126
    {
127 3
        $this->list = array();
128 3
    }
129
130
    /**
131
     * (PHP 5 &gt;= 5.1.0)<br/>
132
     * Count elements of an object
133
     *
134
     * @link http://php.net/manual/en/countable.count.php
135
     * @return int The custom count as an integer.
136
     *       </p>
137
     *       <p>
138
     *       The return value is cast to an integer.
139
     */
140 1
    public function count()
141
    {
142 1
        return count($this->list);
143
    }
144
145
    /**
146
     * Get the content as array
147
     *
148
     * @return array
149
     */
150 2
    public function toArray()
151
    {
152 2
        return $this->list;
153
    }
154
}
155