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.
		
		
		
		
		
			
		
			
				
					
					
						
							91 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							91 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/', | |
| 				'/gii/', | |
| 			), | |
| 		); | |
| 		$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[$path] = "\t'yii" . substr(str_replace('/', '\\', $path), 0, -4) . "' => YII_PATH . '$path',"; | |
| 		} | |
| 		ksort($map); | |
| 		$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.\n"; | |
| 		} else { | |
| 			file_put_contents($mapFile, $output); | |
| 			echo "Class map saved in $mapFile\n"; | |
| 		} | |
| 	} | |
| }
 | |
| 
 |