* @since 2.0 */ class ClassmapController extends Controller { public $defaultAction = 'create'; /** * Creates a class map for the core Yii classes. * @param string $root the root path of Yii framework. Defaults to YII_PATH. * @param string $mapFile the file to contain the class map. Defaults to YII_PATH . '/classes.php'. */ public function actionCreate($root = null, $mapFile = null) { if ($root === null) { $root = YII_PATH; } $root = FileHelper::normalizePath($root); if ($mapFile === null) { $mapFile = YII_PATH . '/classes.php'; } $options = array( 'filter' => function ($path) { if (is_file($path)) { $file = basename($path); if ($file[0] < 'A' || $file[0] > 'Z') { return false; } } return null; }, 'only' => array('.php'), 'except' => array( 'Yii.php', 'YiiBase.php', '/debug/', '/console/', '/test/', ), ); $files = FileHelper::findFiles($root, $options); $map = array(); foreach ($files as $file) { if (($pos = strpos($file, $root)) !== 0) { die("Something wrong: $file\n"); } $path = str_replace('\\', '/', substr($file, strlen($root))); $map[] = "\t'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII_PATH . '$path',"; } $map = implode("\n", $map); $output = <<