0 follower

CConsoleCommandRunner

Package system.console
Inheritance class CConsoleCommandRunner » CComponent
Since 1.0
Source Code framework/console/CConsoleCommandRunner.php
CConsoleCommandRunner manages commands and executes the requested command.

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
command CConsoleCommand|null Returns the currently running command. CConsoleCommandRunner
commands array list of all available commands (command name=>command configuration). CConsoleCommandRunner
scriptName string the entry script name CConsoleCommandRunner

Public Methods

Hide inherited methods

MethodDescriptionDefined 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
evaluateExpression() Evaluates a PHP expression or callback under the context of this component. CComponent
findCommands() Searches for commands under the specified directory. CConsoleCommandRunner
getCommand() Returns the currently running command. 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
setCommand() Sets the currently active command. CConsoleCommandRunner

Property Details

command property (available since v1.1.14)
public CConsoleCommand|null getCommand()
public void setCommand(CConsoleCommand $value)

Returns the currently running command.

commands property
public array $commands;

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',
)

scriptName property read-only
public string getScriptName()

the entry script name

Method Details

addCommands() method
public void addCommands(string $path)
$path string the alias of the directory containing the command class files.
Source Code: framework/console/CConsoleCommandRunner.php#128 (show)
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.

createCommand() method
public CConsoleCommand createCommand(string $name)
$name string command name (case-insensitive)
{return} CConsoleCommand the command object. Null if the name is invalid.
Source Code: framework/console/CConsoleCommandRunner.php#144 (show)
public function createCommand($name)
{
    
$name=strtolower($name);

    
$command=null;
    if(isset(
$this->commands[$name]))
        
$command=$this->commands[$name];
    else
    {
        
$commands=array_change_key_case($this->commands);
        if(isset(
$commands[$name]))
            
$command=$commands[$name];
    }

    if(
$command!==null)
    {
        if(
is_string($command)) // class file path or alias
        
{
            if(
strpos($command,'/')!==false || strpos($command,'\\')!==false)
            {
                
$className=substr(basename($command),0,-4);
                if(!
class_exists($className,false))
                    require_once(
$command);
            }
            else 
// an alias
                
$className=Yii::import($command);
            return new 
$className($name,$this);
        }
        else 
// an array configuration
            
return Yii::createComponent($command,$name,$this);
    }
    elseif(
$name==='help')
        return new 
CHelpCommand('help',$this);
    else
        return 
null;
}

findCommands() method
public array findCommands(string $path)
$path string the directory containing the command class files.
{return} array list of commands (command name=>command class file)
Source Code: framework/console/CConsoleCommandRunner.php#108 (show)
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.

getCommand() method (available since v1.1.14)
public CConsoleCommand|null getCommand()
{return} CConsoleCommand|null the currently active command.
Source Code: framework/console/CConsoleCommandRunner.php#89 (show)
public function getCommand()
{
    return 
$this->_command;
}

Returns the currently running command.

getScriptName() method
public string getScriptName()
{return} string the entry script name
Source Code: framework/console/CConsoleCommandRunner.php#79 (show)
public function getScriptName()
{
    return 
$this->_scriptName;
}

run() method
public integer|null run(array $args)
$args array list of user supplied parameters (including the entry script name and the command name).
{return} integer|null application exit code returned by the command. if null is returned, application will not exit explicitly. See also CConsoleApplication::processRequest(). (return value is available since version 1.1.11)
Source Code: framework/console/CConsoleCommandRunner.php#54 (show)
public function run($args)
{
    
$this->_scriptName=$args[0];
    
array_shift($args);
    if(isset(
$args[0]))
    {
        
$name=$args[0];
        
array_shift($args);
    }
    else
        
$name='help';

    
$oldCommand=$this->_command;
    if((
$command=$this->createCommand($name))===null)
        
$command=$this->createCommand('help');
    
$this->_command=$command;
    
$command->init();
    
$exitCode=$command->run($args);
    
$this->_command=$oldCommand;
    return 
$exitCode;
}

Executes the requested command.

setCommand() method (available since v1.1.14)
public void setCommand(CConsoleCommand $value)
$value CConsoleCommand the currently active command.
Source Code: framework/console/CConsoleCommandRunner.php#98 (show)
public function setCommand($value)
{
    
$this->_command=$value;
}