You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.1 KiB
90 lines
2.1 KiB
11 years ago
|
<?php
|
||
|
/**
|
||
|
* @link http://www.yiiframework.com/
|
||
|
* @copyright Copyright (c) 2008 Yii Software LLC
|
||
|
* @license http://www.yiiframework.com/license/
|
||
|
*/
|
||
|
|
||
|
namespace yii\build\controllers;
|
||
|
|
||
|
use yii\console\Controller;
|
||
|
use yii\helpers\FileHelper;
|
||
|
|
||
|
/**
|
||
|
* @author Qiang Xue <qiang.xue@gmail.com>
|
||
|
* @since 2.0
|
||
|
*/
|
||
11 years ago
|
class ClassmapController extends Controller
|
||
11 years ago
|
{
|
||
|
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");
|
||
|
}
|
||
|
$path = str_replace('\\', '/', substr($file, strlen($root)));
|
||
|
$map[] = "\t'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII_PATH . '$path',";
|
||
|
}
|
||
|
$map = implode("\n", $map);
|
||
|
$output = <<<EOD
|
||
|
<?php
|
||
|
/**
|
||
|
* Yii core class map.
|
||
|
*
|
||
11 years ago
|
* This file is automatically generated by the "build classmap" command under the "build" folder.
|
||
11 years ago
|
* Do not modify it directly.
|
||
|
*
|
||
|
* @link http://www.yiiframework.com/
|
||
|
* @copyright Copyright (c) 2008 Yii Software LLC
|
||
|
* @license http://www.yiiframework.com/license/
|
||
|
*/
|
||
|
|
||
|
return array(
|
||
|
$map
|
||
|
);
|
||
|
|
||
|
EOD;
|
||
|
if (is_file($mapFile) && file_get_contents($mapFile) === $output) {
|
||
|
echo "Nothing changed.";
|
||
|
} else {
|
||
|
file_put_contents($mapFile, $output);
|
||
|
echo "Class map saved in $mapFile";
|
||
|
}
|
||
|
}
|
||
|
}
|