Pop\Loader\Classmap::generate PHP Метод

generate() публичный статический Метод

Static method to generate a class map file
public static generate ( string $inputFolder, string $outputFile ) : void
$inputFolder string
$outputFile string
Результат void
    public static function generate($inputFolder, $outputFile)
    {
        $dir = new \Pop\File\Dir(realpath($inputFolder), true, true);
        $matches = array();
        $files = $dir->getFiles();
        foreach ($files as $file) {
            if (substr($file, -4) == '.php') {
                $classMatch = array();
                $namespaceMatch = array();
                $classFileContents = file_get_contents($file);
                preg_match('/^class(.*)$/m', $classFileContents, $classMatch);
                preg_match('/^namespace(.*)$/m', $classFileContents, $namespaceMatch);
                $ary = array();
                if (isset($classMatch[0])) {
                    $ary['file'] = str_replace('\\', '/', $file);
                    $ary['class'] = self::parseClass($classMatch[0]);
                    $ary['namespace'] = isset($namespaceMatch[0]) ? self::parseNamespace($namespaceMatch[0]) : null;
                    $matches[] = $ary;
                }
            }
        }
        if (count($matches) > 0) {
            $classMap = '<?php' . PHP_EOL . PHP_EOL . 'return array(';
            $i = 1;
            foreach ($matches as $class) {
                $comma = $i < count($matches) ? ',' : null;
                $className = null !== $class['namespace'] ? $class['namespace'] . '\\' . $class['class'] : $class['class'];
                $classMap .= PHP_EOL . '    \'' . $className . '\' => \'' . $class['file'] . '\'' . $comma;
                $i++;
            }
            $classMap .= PHP_EOL . ');' . PHP_EOL;
            file_put_contents($outputFile, $classMap);
        }
    }

Usage Example

Пример #1
0
 public function testClassmap()
 {
     $classmap = __DIR__ . '/../tmp/classmap.php';
     if (file_exists($classmap)) {
         unlink($classmap);
     }
     Classmap::generate(__DIR__ . '/../../../src', $classmap);
     $this->fileExists($classmap);
     $a = new Autoloader();
     $a->loadClassMap($classmap);
     $this->assertInstanceOf('Pop\\Config', new \Pop\Config(array()));
     unlink($classmap);
 }
All Usage Examples Of Pop\Loader\Classmap::generate