<?php /** * HelpController class file. * * @link http://www.yiiframework.com/ * @copyright Copyright © 2008-2012 Yii Software LLC * @license http://www.yiiframework.com/license/ */ namespace yii\console\commands; /** * HelpCommand represents a console help command. * * HelpCommand displays the available command list or the help instructions * about a specific command. * * To use this command, enter the following on the command line: * * ~~~ * yiic help [command name] * ~~~ * * In the above, if the command name is not provided, it will display all * available commands. * * @property string $help The command description. * * @author Qiang Xue <qiang.xue@gmail.com> * @since 2.0 */ class HelpController extends \yii\console\Controller { public function actionIndex($args = array()) { echo "Yii console command helper (based on Yii v" . \Yii::getVersion() . ").\n"; $commands = $this->getCommands(); if ($commands !== array()) { echo "\n Usage: yiic <command-name> [...options...]\n\n"; echo "The following commands are available:\n"; foreach ($commands as $command) { echo " - $command\n"; } echo "\nTo see individual command help, enter:\n"; echo "\n yiic help <command-name>\n"; } else { echo "\nNo commands are found.\n"; } } protected function getCommands() { $commands = $this->getModuleCommands(\Yii::$application); sort($commands); return array_unique($commands); } /** * @param \yii\base\Module $module * @return array */ protected function getModuleCommands($module) { if ($module === null) { return array(); } $commands = array_keys($module->controllers); foreach ($module->getModules() as $id => $module) { foreach ($this->getModuleCommands($module->getModule($id)) as $command) { $commands[] = $command; } } $files = scandir($module->getControllerPath()); foreach ($files as $file) { if(strcmp(substr($file,-14),'Controller.php') === 0 && is_file($file)) { $commands[] = lcfirst(substr(basename($file), 0, -14)); } } return $commands; } }