* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ClassLoader; @trigger_error('The '.__NAMESPACE__.'\ClassMapGenerator class is deprecated since Symfony 3.3 and will be removed in 4.0. Use Composer instead.', E_USER_DEPRECATED); /** * ClassMapGenerator. * * @author Gyula Sallai * * @deprecated since version 3.3, to be removed in 4.0. */ class ClassMapGenerator { /** * Generate a class map file. * * @param array|string $dirs Directories or a single path to search in * @param string $file The name of the class map file */ public static function dump($dirs, $file) { $dirs = (array) $dirs; $maps = array(); foreach ($dirs as $dir) { $maps = array_merge($maps, static::createMap($dir)); } file_put_contents($file, sprintf('isFile()) { continue; } $path = $file->getRealPath() ?: $file->getPathname(); if ('php' !== pathinfo($path, PATHINFO_EXTENSION)) { continue; } $classes = self::findClasses($path); if (\PHP_VERSION_ID >= 70000) { // PHP 7 memory manager will not release after token_get_all(), see https://bugs.php.net/70098 gc_mem_caches(); } foreach ($classes as $class) { $map[$class] = $path; } } return $map; } /** * Extract the classes in the given file. * * @param string $path The file to check * * @return array The found classes */ private static function findClasses($path) { $contents = file_get_contents($path); $tokens = token_get_all($contents); $classes = array(); $namespace = ''; for ($i = 0; isset($tokens[$i]); ++$i) { $token = $tokens[$i]; if (!isset($token[1])) { continue; } $class = ''; switch ($token[0]) { case T_NAMESPACE: $namespace = ''; // If there is a namespace, extract it while (isset($tokens[++$i][1])) { if (in_array($tokens[$i][0], array(T_STRING, T_NS_SEPARATOR))) { $namespace .= $tokens[$i][1]; } } $namespace .= '\\'; break; case T_CLASS: case T_INTERFACE: case T_TRAIT: // Skip usage of ::class constant $isClassConstant = false; for ($j = $i - 1; $j > 0; --$j) { if (!isset($tokens[$j][1])) { break; } if (T_DOUBLE_COLON === $tokens[$j][0]) { $isClassConstant = true; break; } elseif (!in_array($tokens[$j][0], array(T_WHITESPACE, T_DOC_COMMENT, T_COMMENT))) { break; } } if ($isClassConstant) { break; } // Find the classname while (isset($tokens[++$i][1])) { $t = $tokens[$i]; if (T_STRING === $t[0]) { $class .= $t[1]; } elseif ('' !== $class && T_WHITESPACE === $t[0]) { break; } } $classes[] = ltrim($namespace.$class, '\\'); break; default: break; } } return $classes; } } __halt_compiler();----SIGNATURE:----L8Xajxs2jx8cdm2xcMb/J6XcTgVEz2M+7veOC1ACGb6645TIM8WA3X8QryyeGGSAiXX5xHge5VZoF9WcHqR07ny9q8cCE1PtL7eXcL+9frg3vIczpTJ3/UA20+j3Tm9xPR/HNr49SgaiS8MtlJNAyBaD9V02PNR+1btSk8wRQZMGL64m/dWnIyHATOl5eUuY7HSaw15AQSSclDflIQVPc2X5EK8ReyIpeL3/0+HdUuienZX36hiIBokIM2uosVbZm0JW/09FXjxJcTc5RmlvtMYNbVRfrUg6XTSB+9Q+M1gBcPLRM2Dx9/lGZersHZNkEqTkMFVUte/csIu+gy8QYaxnEKMCVXlLxzjoqAs7lUO9JUwgYFB5xdLLhXCl4T7pE9oy3GIYNdwV7z1HWRnAn5D1TgN4m1wx76AtkHtSjL21muaq0M2qCqaUWr7lnz8wrYMtB+R7jAUHmzojQ6iwN1YvRkngCyUfNpWKJQGuc+4IKx9f/EiNn4wmTZmNos6r5drPQrVBrWyCj0fSSIE9AWdwVSGq7ZbJqAwOvHBUXqZC2z4FYMlhQivJqGbJ4p6ZtLRh6FilzSQwhsEqFQco+y5hv6CI6JYaNzwF4BBd40gO6JfAHYhI6vZh9OWsGH6wkQFKcwktfROyH4+Tr0jF2jwvx4bTc2tP2BOpiUgBhJs=----ATTACHMENT:----ODM0OTAxNjAxMjA5NjQ3MyA2MzgyNzU5MjU4MTM5OTkzIDM3Nzc1Mjc2OTAzODY3Njk=