Package | system.console |
---|---|
Inheritance | class CConsoleCommandRunner » CComponent |
Since | 1.0 |
Version | $Id$ |
Source Code | framework/console/CConsoleCommandRunner.php |
Property | Type | Description | Defined By |
---|---|---|---|
commands | array | list of all available commands (command name=>command configuration). | CConsoleCommandRunner |
scriptName | string | the entry script name | CConsoleCommandRunner |
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | CComponent |
__get() | Returns a property value, an event handler list or a behavior based on its name. | CComponent |
__isset() | Checks if a property value is null. | CComponent |
__set() | Sets value of a component property. | CComponent |
__unset() | Sets a component property to be null. | CComponent |
addCommands() | Adds commands from the specified command path. | CConsoleCommandRunner |
asa() | Returns the named behavior object. | CComponent |
attachBehavior() | Attaches a behavior to this component. | CComponent |
attachBehaviors() | Attaches a list of behaviors to the component. | CComponent |
attachEventHandler() | Attaches an event handler to an event. | CComponent |
canGetProperty() | Determines whether a property can be read. | CComponent |
canSetProperty() | Determines whether a property can be set. | CComponent |
createCommand() | CConsoleCommandRunner | |
detachBehavior() | Detaches a behavior from the component. | CComponent |
detachBehaviors() | Detaches all behaviors from the component. | CComponent |
detachEventHandler() | Detaches an existing event handler. | CComponent |
disableBehavior() | Disables an attached behavior. | CComponent |
disableBehaviors() | Disables all behaviors attached to this component. | CComponent |
enableBehavior() | Enables an attached behavior. | CComponent |
enableBehaviors() | Enables all behaviors attached to this component. | CComponent |
findCommands() | Searches for commands under the specified directory. | CConsoleCommandRunner |
getEventHandlers() | Returns the list of attached event handlers for an event. | CComponent |
getScriptName() | Returns the entry script name | CConsoleCommandRunner |
hasEvent() | Determines whether an event is defined. | CComponent |
hasEventHandler() | Checks whether the named event has attached handlers. | CComponent |
hasProperty() | Determines whether a property is defined. | CComponent |
raiseEvent() | Raises an event. | CComponent |
run() | Executes the requested command. | CConsoleCommandRunner |
list of all available commands (command name=>command configuration). Each command configuration can be either a string or an array. If the former, the string should be the class name or class path alias of the command. If the latter, the array must contain a 'class' element which specifies the command's class name or class path alias. The rest name-value pairs in the array are used to initialize the corresponding command properties. For example,
array( 'email'=>array( 'class'=>'path.to.Mailer', 'interval'=>3600, ), 'log'=>'path.to.LoggerCommand', )
the entry script name
public void addCommands(string $path)
| ||
$path | string | the alias of the directory containing the command class files. |
public function addCommands($path)
{
if(($commands=$this->findCommands($path))!==array())
{
foreach($commands as $name=>$file)
{
if(!isset($this->commands[$name]))
$this->commands[$name]=$file;
}
}
}
Adds commands from the specified command path. If a command already exists, the new one will be ignored.
public CConsoleCommand createCommand(string $name)
| ||
$name | string | command name (case-insensitive) |
{return} | CConsoleCommand | the command object. Null if the name is invalid. |
public function createCommand($name)
{
$name=strtolower($name);
if(isset($this->commands[$name]))
{
if(is_string($this->commands[$name])) // class file path or alias
{
if(strpos($this->commands[$name],'/')!==false || strpos($this->commands[$name],'\\')!==false)
{
$className=substr(basename($this->commands[$name]),0,-4);
if(!class_exists($className,false))
require_once($this->commands[$name]);
}
else // an alias
$className=Yii::import($this->commands[$name]);
return new $className($name,$this);
}
else // an array configuration
return Yii::createComponent($this->commands[$name],$name,$this);
}
else if($name==='help')
return new CHelpCommand('help',$this);
else
return null;
}
public array findCommands(string $path)
| ||
$path | string | the directory containing the command class files. |
{return} | array | list of commands (command name=>command class file) |
public function findCommands($path)
{
if(($dir=@opendir($path))===false)
return array();
$commands=array();
while(($name=readdir($dir))!==false)
{
$file=$path.DIRECTORY_SEPARATOR.$name;
if(!strcasecmp(substr($name,-11),'Command.php') && is_file($file))
$commands[strtolower(substr($name,0,-11))]=$file;
}
closedir($dir);
return $commands;
}
Searches for commands under the specified directory.
public string getScriptName()
| ||
{return} | string | the entry script name |
public function getScriptName()
{
return $this->_scriptName;
}
public void run(array $args)
| ||
$args | array | list of user supplied parameters (including the entry script name and the command name). |
public function run($args)
{
$this->_scriptName=$args[0];
array_shift($args);
if(isset($args[0]))
{
$name=$args[0];
array_shift($args);
}
else
$name='help';
if(($command=$this->createCommand($name))===null)
$command=$this->createCommand('help');
$command->run($args);
}
Executes the requested command.
Signup or Login in order to comment.