#!/usr/bin/env php */ class SymfonyClassCollectionLoader { static private $loaded; /** * Loads a list of classes and caches them in one big file. * * @param array $classes An array of classes to load * @param string $cacheDir A cache directory * @param string $name The cache name prefix * @param string $extension File extension of the resulting file * * @throws InvalidArgumentException When class can't be loaded */ static public function load(array $classes, $cacheDir, $name, $extension = '.php') { // each $name can only be loaded once per PHP process if (isset(self::$loaded[$name])) { return; } self::$loaded[$name] = true; $content = ''; foreach ($classes as $class) { if (!class_exists($class) && !interface_exists($class) && (!function_exists('trait_exists') || !trait_exists($class))) { throw new InvalidArgumentException(sprintf('Unable to load class "%s"', $class)); } $r = new ReflectionClass($class); $content .= preg_replace(array('/^\s*<\?php/', '/\?>\s*$/'), '', file_get_contents($r->getFileName())); } $cache = $cacheDir.'/'.$name.$extension; self::writeCacheFile($cache, self::stripComments('