Class CommandRunner

Run CLI commands for the provided application.

Namespace: Cake\Console

Properties summary

  • $_eventClass protected
    string

    Default class name for new event objects.

  • $_eventManager protected
    \Cake\Event\EventManagerInterface|\Cake\Event\EventManager

    Instance of the Cake\Event\EventManager this object is using to dispatch inner events.

  • $aliases protected
    array

    Alias mappings.

  • $app protected
    \Cake\Core\ConsoleApplicationInterface

    The application console commands are being run for.

  • $factory protected
    \Cake\Console\CommandFactoryInterface

    The application console commands are being run for.

  • $root protected
    string

    The root command name. Defaults to cake.

Method Summary

Method Detail

__construct() public

__construct(\Cake\Core\ConsoleApplicationInterface $app, mixed $root, \Cake\Console\CommandFactoryInterface $factory)

Constructor

Parameters

\Cake\Core\ConsoleApplicationInterface $app

The application to run CLI commands for.

string $root optional

The root command name to be removed from argv.

\Cake\Console\CommandFactoryInterface|null $factory optional

Command factory instance.

bootstrap() protected

bootstrap()

Application bootstrap wrapper.

Calls bootstrap() and events() if application implements EventApplicationInterface. After the application is bootstrapped and events are attached, plugins are bootstrapped and have their events attached.

checkCollection() protected

checkCollection(mixed $commands, mixed $method)

Check the created CommandCollection

Parameters

mixed $commands

The CommandCollection to check, could be anything though.

string $method

The method that was used.

Throws

RuntimeException

createShell() protected

createShell(mixed $className, \Cake\Console\ConsoleIo $io)

The wrapper for creating shell instances.

Parameters

string $className

Shell class name.

\Cake\Console\ConsoleIo $io

The IO wrapper for the created shell class.

Returns

\Cake\Console\Shell|\Cake\Console\Command

dispatchEvent() public

dispatchEvent(mixed $name, mixed $data, mixed $subject)

Wrapper for creating and dispatching events.

Returns a dispatched event.

Parameters

string $name

Name of the event.

array|null $data optional

Any value you wish to be transported with this event to it can be read by listeners.

object|null $subject optional

The object that this event applies to ($this by default).

Returns

\Cake\Event\Event

eventManager() public

eventManager(\Cake\Event\EventManager $events)

Get/set the application's event manager.

If the application does not support events and this method is used as a setter, an exception will be raised.

Parameters

\Cake\Event\EventManager|null $events optional

The event manager to set.

Returns

\Cake\Event\EventManager|$this

getEventManager() public

getEventManager()

Get the application's event manager or the global one.

Returns

\Cake\Event\EventManagerInterface

getShell() protected

getShell(\Cake\Console\ConsoleIo $io, \Cake\Console\CommandCollection $commands, mixed $name)

Get the shell instance for a given command name

Parameters

\Cake\Console\ConsoleIo $io

The IO wrapper for the created shell class.

\Cake\Console\CommandCollection $commands

The command collection to find the shell in.

string $name

The command name to find

Returns

\Cake\Console\Shell|\Cake\Console\Command

loadRoutes() protected

loadRoutes()

Ensure that the application's routes are loaded.

Console commands and shells often need to generate URLs.

longestCommandName() protected

longestCommandName(mixed $commands, mixed $argv)

Build the longest command name that exists in the collection

Build the longest command name that matches a defined command. This will traverse a maximum of 3 tokens.

Parameters

\Cake\Console\CommandCollection $commands

The command collection to check.

array $argv

The CLI arguments.

Returns

array

An array of the resolved name and modified argv.

resolveName() protected

resolveName(mixed $commands, mixed $io, mixed $name)

Resolve the command name into a name that exists in the collection.

Apply backwards compatible inflections and aliases. Will step forward up to 3 tokens in $argv to generate a command name in the CommandCollection. More specific command names take precedence over less specific ones.

Parameters

\Cake\Console\CommandCollection $commands

The command collection to check.

\Cake\Console\ConsoleIo $io

ConsoleIo object for errors.

string|null $name

The name from the CLI args.

Returns

string

The resolved name.

run() public

run(array $argv, \Cake\Console\ConsoleIo $io)

Run the command contained in $argv.

Use the application to do the following:

  • Bootstrap the application
  • Create the CommandCollection using the console() hook on the application.
  • Trigger the Console.buildCommands event of auto-wiring plugins.
  • Run the requested command.

Parameters

array $argv

The arguments from the CLI environment.

\Cake\Console\ConsoleIo|null $io optional

The ConsoleIo instance. Used primarily for testing.

Returns

int

The exit code of the command.

Throws

RuntimeException

runCommand() protected

runCommand(\Cake\Console\Command $command, array $argv, \Cake\Console\ConsoleIo $io)

Execute a Command class.

Parameters

\Cake\Console\Command $command

The command to run.

array $argv

The CLI arguments to invoke.

\Cake\Console\ConsoleIo $io

The console io

Returns

int|null

Exit code

runShell() protected

runShell(\Cake\Console\Shell $shell, array $argv)

Execute a Shell class.

Parameters

\Cake\Console\Shell $shell

The shell to run.

array $argv

The CLI arguments to invoke.

Returns

int|bool|null

Exit code

setAliases() public

setAliases(array $aliases)

Replace the entire alias map for a runner.

Aliases allow you to define alternate names for commands in the collection. This can be useful to add top level switches like --version or -h

Usage

$runner->setAliases(['--version' => 'version']);

Parameters

string[] $aliases

The map of aliases to replace.

Returns

$this

setEventManager() public

setEventManager(\Cake\Event\EventManager $events)

Get/set the application's event manager.

If the application does not support events and this method is used as a setter, an exception will be raised.

Parameters

\Cake\Event\EventManager $events

The event manager to set.

Returns

$this

Property Detail

$_eventClass protected

Default class name for new event objects.

Type

string

$_eventManager protected

Instance of the Cake\Event\EventManager this object is using to dispatch inner events.

Type

\Cake\Event\EventManagerInterface|\Cake\Event\EventManager

$aliases protected

Alias mappings.

Type

array

$app protected

The application console commands are being run for.

Type

\Cake\Core\ConsoleApplicationInterface

$factory protected

The application console commands are being run for.

Type

\Cake\Console\CommandFactoryInterface

$root protected

The root command name. Defaults to cake.

Type

string

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.9/class-Cake.Console.CommandRunner.html