| Conditions | 20 | 
| Paths | 132 | 
| Total Lines | 87 | 
| Code Lines | 48 | 
| Lines | 0 | 
| Ratio | 0 % | 
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php  | 
            ||
| 82 | private static function findClasses($path)  | 
            ||
| 83 |     { | 
            ||
| 84 | $extraTypes = PHP_VERSION_ID < 50400 ? '' : '|trait';  | 
            ||
| 85 |         if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=')) { | 
            ||
| 86 | $extraTypes .= '|enum';  | 
            ||
| 87 | }  | 
            ||
| 88 | |||
| 89 | // Use @ here instead of Silencer to actively suppress 'unhelpful' output  | 
            ||
| 90 | // @link https://github.com/composer/composer/pull/4886  | 
            ||
| 91 | $contents = @php_strip_whitespace($path);  | 
            ||
| 92 |         if (!$contents) { | 
            ||
| 93 |             if (!file_exists($path)) { | 
            ||
| 94 | $message = 'File at "%s" does not exist, check your classmap definitions';  | 
            ||
| 95 |             } elseif (!is_readable($path)) { | 
            ||
| 96 | $message = 'File at "%s" is not readable, check its permissions';  | 
            ||
| 97 |             } elseif ('' === trim(file_get_contents($path))) { | 
            ||
| 98 | // The input file was really empty and thus contains no classes  | 
            ||
| 99 | return array();  | 
            ||
| 100 |             } else { | 
            ||
| 101 | $message = 'File at "%s" could not be parsed as PHP, it may be binary or corrupted';  | 
            ||
| 102 | }  | 
            ||
| 103 | $error = error_get_last();  | 
            ||
| 104 |             if (isset($error['message'])) { | 
            ||
| 105 | $message .= PHP_EOL . 'The following message may be helpful:' . PHP_EOL . $error['message'];  | 
            ||
| 106 | }  | 
            ||
| 107 | throw new \RuntimeException(sprintf($message, $path));  | 
            ||
| 108 | }  | 
            ||
| 109 | |||
| 110 | // return early if there is no chance of matching anything in this file  | 
            ||
| 111 |         if (!preg_match('{\b(?:class|interface' . $extraTypes . ')\s}i', $contents)) { | 
            ||
| 112 | return array();  | 
            ||
| 113 | }  | 
            ||
| 114 | |||
| 115 | // strip heredocs/nowdocs  | 
            ||
| 116 |         $contents = preg_replace('{<<<\s*(\'?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r)\\2(?=\r\n|\n|\r|;)}s', 'null', $contents); | 
            ||
| 117 | // strip strings  | 
            ||
| 118 |         $contents = preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents); | 
            ||
| 119 | // strip leading non-php code if needed  | 
            ||
| 120 |         if (substr($contents, 0, 2) !== '<?') { | 
            ||
| 121 |             $contents = preg_replace('{^.+?<\?}s', '<?', $contents, 1, $replacements); | 
            ||
| 122 |             if ($replacements === 0) { | 
            ||
| 123 | return array();  | 
            ||
| 124 | }  | 
            ||
| 125 | }  | 
            ||
| 126 | // strip non-php blocks in the file  | 
            ||
| 127 |         $contents = preg_replace('{\?>.+<\?}s', '?><?', $contents); | 
            ||
| 128 | // strip trailing non-php code if needed  | 
            ||
| 129 | $pos = strrpos($contents, '?>');  | 
            ||
| 130 |         if (false !== $pos && false === strpos(substr($contents, $pos), '<?')) { | 
            ||
| 131 | $contents = substr($contents, 0, $pos);  | 
            ||
| 132 | }  | 
            ||
| 133 | |||
| 134 |         preg_match_all('{ | 
            ||
| 135 | (?:  | 
            ||
| 136 | \b(?<![\$:>])(?P<type>class|interface' . $extraTypes . ') \s++ (?P<name>[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+)  | 
            ||
| 137 |                | \b(?<![\$:>])(?P<ns>namespace) (?P<nsname>\s++[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+)? \s*+ [\{;] | 
            ||
| 138 | )  | 
            ||
| 139 | }ix', $contents, $matches);  | 
            ||
| 140 | |||
| 141 | $classes = array();  | 
            ||
| 142 | $namespace = '';  | 
            ||
| 143 | |||
| 144 |         for ($i = 0, $len = count($matches['type']); $i < $len; $i++) { | 
            ||
| 145 |             if (!empty($matches['ns'][$i])) { | 
            ||
| 146 |                 $namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\'; | 
            ||
| 147 |             } else { | 
            ||
| 148 | $name = $matches['name'][$i];  | 
            ||
| 149 | // skip anon classes extending/implementing  | 
            ||
| 150 |                 if ($name === 'extends' || $name === 'implements') { | 
            ||
| 151 | continue;  | 
            ||
| 152 | }  | 
            ||
| 153 |                 if ($name[0] === ':') { | 
            ||
| 154 | // This is an XHP class, https://github.com/facebook/xhp  | 
            ||
| 155 |                     $name = 'xhp' . substr(str_replace(array('-', ':'), array('_', '__'), $name), 1); | 
            ||
| 156 |                 } elseif ($matches['type'][$i] === 'enum') { | 
            ||
| 157 | // In Hack, something like:  | 
            ||
| 158 |                     //   enum Foo: int { HERP = '123'; } | 
            ||
| 159 | // The regex above captures the colon, which isn't part of  | 
            ||
| 160 | // the class name.  | 
            ||
| 161 | $name = rtrim($name, ':');  | 
            ||
| 162 | }  | 
            ||
| 163 | $classes[] = ltrim($namespace . $name, '\\');  | 
            ||
| 164 | }  | 
            ||
| 165 | }  | 
            ||
| 166 | |||
| 167 | return $classes;  | 
            ||
| 168 | }  | 
            ||
| 169 | }  | 
            ||
| 170 |