public static function make()
{
$libDir = str_replace(DIRECTORY_SEPARATOR, '/', realpath(__DIR__ . DIRECTORY_SEPARATOR . '..'));
require_once $libDir . '/util/sfFinder.class.php';
$files = sfFinder::type('file')->prune('plugins')->prune('vendor')->prune('skeleton')->prune('default')->prune('helper')->name('*.php')->in($libDir);
sort($files, SORT_STRING);
$classes = '';
foreach ($files as $file) {
$file = str_replace(DIRECTORY_SEPARATOR, '/', $file);
$class = basename($file, false === strpos($file, '.class.php') ? '.php' : '.class.php');
$contents = file_get_contents($file);
if (false !== stripos($contents, 'class ' . $class) || false !== stripos($contents, 'interface ' . $class) || false !== stripos($contents, 'trait ' . $class)) {
$classes .= sprintf(" '%s' => '%s',\n", strtolower($class), substr(str_replace($libDir, '', $file), 1));
}
}
$content = preg_replace('/protected \\$classes = array *\\(.*?\\);/s', sprintf("protected \$classes = array(\n%s );", $classes), file_get_contents(__FILE__));
file_put_contents(__FILE__, $content);
}