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.
		
		
		
		
		
			
		
			
				
					
					
						
							89 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							89 lines
						
					
					
						
							2.1 KiB
						
					
					
				<?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 | 
						|
 */ | 
						|
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"); | 
						|
			} | 
						|
			$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. | 
						|
 * | 
						|
 * This file is automatically generated by the "build classmap" command under the "build" folder. | 
						|
 * 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"; | 
						|
		} | 
						|
	} | 
						|
}
 | 
						|
 |