W3cubDocs

/CakePHP 4.4

Class CommandTask

Base class for Shell Command reflection.

Namespace: Cake\Shell\Task

Constants

  • int
    CODE_ERROR
    1

    Default error code

  • int
    CODE_SUCCESS
    0

    Default success code

  • int
    NORMAL
    ConsoleIo::NORMAL

    Output constant for making normal shells.

  • int
    QUIET
    ConsoleIo::QUIET

    Output constants for making quiet shells.

  • int
    VERBOSE
    ConsoleIo::VERBOSE

    Output constant making verbose shells.

Property Summary

  • $OptionParser public
    Cake\Console\ConsoleOptionParser

    An instance of ConsoleOptionParser that has been configured for this class.

  • $Tasks public
    Cake\Console\TaskRegistry

    Task Collection for the command, used to create Tasks.

  • $_io protected
    Cake\Console\ConsoleIo

    ConsoleIo instance.

  • $_modelFactories protected
    array<callableCake\Datasource\Locator\LocatorInterface>

    A list of overridden model factory functions.

  • $_modelType protected
    string

    The model type to use.

  • $_tableLocator protected
    Cake\ORM\Locator\LocatorInterface|null

    Table locator instance

  • $_taskMap protected
    array<string, array>

    Normalized map of tasks.

  • $args public
    array

    Contains arguments parsed from the command line.

  • $command public
    string|null

    The command (method/task) that is being run.

  • $defaultTable protected
    string|null

    This object's default table alias.

  • $interactive public
    bool

    If true, the script will ask for permission to perform actions.

  • $modelClass protected deprecated
    string|null

    This object's primary model class name. Should be a plural form. CakePHP will not inflect the name.

  • $name public
    string

    The name of the shell in camelized.

  • $params public
    array

    Contains command switches parsed from the command line.

  • $plugin public
    string

    The name of the plugin the shell belongs to. Is automatically set by ShellDispatcher when a shell is constructed.

  • $rootName protected
    string

    The root command name used when generating help output.

  • $taskNames public
    array<string>

    Contains the loaded tasks

  • $tasks public
    array|bool

    Contains tasks to load and instantiate

Method Summary

  • __construct() public

    Constructs this Shell instance.

  • __debugInfo() public

    Returns an array that can be used to describe the internal state of this object.

  • __get() public

    Overload get for lazy building of tasks

  • _appendShells() protected

    Scan the provided paths for shells, and append them into $shellList

  • _displayHelp() protected

    Display the help in the correct format

  • _findShells() protected

    Find shells in $path and add them to $shellList

  • _mergeProperty() protected

    Merge a single property with the values declared in all parent classes.

  • _mergePropertyData() protected

    Merge each of the keys in a property together.

  • _mergeVars() protected

    Merge the list of $properties with all parent classes of the current class.

  • _scanDir() protected

    Scan a directory for .php files and return the class names that should be within them.

  • _setModelClass() protected

    Set the modelClass property based on conventions.

  • _setOutputLevel() protected

    Set the output level based on the parameters.

  • _stop() protected

    Stop execution of the current script. Raises a StopException to try and halt the execution.

  • _validateTasks() protected

    Checks that the tasks in the task map are actually available

  • _welcome() protected

    Displays a header for the shell

  • abort() public

    Displays a formatted error message and exits the application with an error code.

  • clear() public

    Clear the console

  • createFile() public

    Creates a file at given path

  • dispatchShell() public

    Dispatch a command to another Shell. Similar to Object::requestAction() but intended for running shells from other shells.

  • err() public

    Outputs a single or multiple error messages to stderr. If no parameters are passed outputs just a newline.

  • fetchTable() public

    Convenience method to get a table instance.

  • getIo() public

    Get the io object for this shell.

  • getModelType() public

    Get the model type to be used by this class

  • getOptionParser() public

    Gets the option parser instance and configures it.

  • getShellList() public

    Gets the shell command listing.

  • getTableLocator() public

    Gets the table locator.

  • hasMethod() public

    Check to see if this shell has a callable method by the given name.

  • hasTask() public

    Check to see if this shell has a task with the provided name.

  • helper() public

    Render a Console Helper

  • hr() public

    Outputs a series of minus characters to the standard output, acts as a visual separator.

  • in() public

    Prompts the user for input, and returns it.

  • info() public

    Convenience method for out() that wraps message between tag

  • initialize() public

    Initializes the Shell acts as constructor for subclasses allows configuration of tasks prior to shell execution

  • loadModel() public deprecated

    Loads and constructs repository objects required by this object

  • loadTasks() public

    Loads tasks defined in public $tasks

  • log() public

    Convenience method to write a message to Log. See Log::write() for more information on writing to logs.

  • main() public @method

    Main entry method for the shell.

  • modelFactory() public

    Override a existing callable to generate repositories of a given type.

  • nl() public

    Returns a single or multiple linefeeds sequences.

  • out() public

    Outputs a single or multiple messages to stdout. If no parameters are passed outputs just a newline.

  • param() public

    Safely access the values in $this->params.

  • parseDispatchArguments() public

    Parses the arguments for the dispatchShell() method.

  • quiet() public

    Output at all levels.

  • runCommand() public

    Runs the Shell with the provided argv.

  • setIo() public

    Set the io object for this shell.

  • setModelType() public

    Set the model type to be used by this class

  • setRootName() public

    Set the root command name for help output.

  • setTableLocator() public

    Sets the table locator.

  • shortPath() public

    Makes absolute file path easier to read

  • startup() public

    Starts up the Shell and displays the welcome message. Allows for checking and configuring prior to command or main execution

  • success() public

    Convenience method for out() that wraps message between tag

  • verbose() public

    Output at the verbose level.

  • warn() public

    Convenience method for err() that wraps message between tag

  • wrapText() public

    Wrap a block of text. Allows you to set the width, and indenting on a block of text.

Method Detail

__construct() public

__construct(Cake\Console\ConsoleIo|null $io = null, Cake\ORM\Locator\LocatorInterface|null $locator = null)

Constructs this Shell instance.

Parameters

Cake\Console\ConsoleIo|null $io optional

An io instance.

Cake\ORM\Locator\LocatorInterface|null $locator optional

Table locator instance.

Links

https://book.cakephp.org/4/en/console-commands/shells.html

__debugInfo() public

__debugInfo(): array<string, mixed>

Returns an array that can be used to describe the internal state of this object.

Returns

array<string, mixed>

__get() public

__get(string $name): Cake\Console\Shell

Overload get for lazy building of tasks

Parameters

string $name

The task to get.

Returns

Cake\Console\Shell

_appendShells() protected

_appendShells(string $type, array<string> $shells, array<string, mixed> $shellList, array<string> $skip): array<string, mixed>

Scan the provided paths for shells, and append them into $shellList

Parameters

string $type

The type of object.

array<string> $shells

The shell names.

array<string, mixed> $shellList

List of shells.

array<string> $skip

List of command names to skip.

Returns

array<string, mixed>

_displayHelp() protected

_displayHelp(string|null $command = null): int|null

Display the help in the correct format

Parameters

string|null $command optional

The command to get help for.

Returns

int|null

_findShells() protected

_findShells(array<string, mixed> $shellList, string $path, string $key, array<string> $skip): array<string, mixed>

Find shells in $path and add them to $shellList

Parameters

array<string, mixed> $shellList

The shell listing array.

string $path

The path to look in.

string $key

The key to add shells to

array<string> $skip

A list of commands to exclude.

Returns

array<string, mixed>

_mergeProperty() protected

_mergeProperty(string $property, array<string> $parentClasses, array<string, mixed> $options): void

Merge a single property with the values declared in all parent classes.

Parameters

string $property

The name of the property being merged.

array<string> $parentClasses

An array of classes you want to merge with.

array<string, mixed> $options

Options for merging the property, see _mergeVars()

Returns

void

_mergePropertyData() protected

_mergePropertyData(array $current, array $parent, bool $isAssoc): array

Merge each of the keys in a property together.

Parameters

array $current

The current merged value.

array $parent

The parent class' value.

bool $isAssoc

Whether the merging should be done in associative mode.

Returns

array

_mergeVars() protected

_mergeVars(array<string> $properties, array<string, mixed> $options = []): void

Merge the list of $properties with all parent classes of the current class.

Options:

  • associative - A list of properties that should be treated as associative arrays. Properties in this list will be passed through Hash::normalize() before merging.

Parameters

array<string> $properties

An array of properties and the merge strategy for them.

array<string, mixed> $options optional

The options to use when merging properties.

Returns

void

_scanDir() protected

_scanDir(string $dir): array<string>

Scan a directory for .php files and return the class names that should be within them.

Parameters

string $dir

The directory to read.

Returns

array<string>

_setModelClass() protected

_setModelClass(string $name): void

Set the modelClass property based on conventions.

If the property is already set it will not be overwritten

Parameters

string $name

Class name.

Returns

void

_setOutputLevel() protected

_setOutputLevel(): void

Set the output level based on the parameters.

This reconfigures both the output level for out() and the configured stdout/stderr logging

Returns

void

_stop() protected

_stop(int $status = self::CODE_SUCCESS): void

Stop execution of the current script. Raises a StopException to try and halt the execution.

Parameters

int $status optional

see https://secure.php.net/exit for values

Returns

void

Throws

Cake\Console\Exception\StopException

_validateTasks() protected

_validateTasks(): void

Checks that the tasks in the task map are actually available

Returns

void

Throws

RuntimeException

_welcome() protected

_welcome(): void

Displays a header for the shell

Returns

void

abort() public

abort(string $message, int $exitCode = self::CODE_ERROR): void

Displays a formatted error message and exits the application with an error code.

Parameters

string $message

The error message

int $exitCode optional

The exit code for the shell task.

Returns

void

Throws

Cake\Console\Exception\StopException

Links

https://book.cakephp.org/4/en/console-and-shells.html#styling-output

clear() public

clear(): void

Clear the console

Returns

void

Links

https://book.cakephp.org/4/en/console-and-shells.html#console-output

createFile() public

createFile(string $path, string $contents): bool

Creates a file at given path

Parameters

string $path

Where to put the file.

string $contents

Content to put in the file.

Returns

bool

Links

https://book.cakephp.org/4/en/console-and-shells.html#creating-files

dispatchShell() public

dispatchShell(): int

Dispatch a command to another Shell. Similar to Object::requestAction() but intended for running shells from other shells.

Usage:

With a string command:

return $this->dispatchShell('schema create DbAcl');

Avoid using this form if you have string arguments, with spaces in them. The dispatched will be invoked incorrectly. Only use this form for simple command dispatching.

With an array command:

return $this->dispatchShell('schema', 'create', 'i18n', '--dry');

With an array having two key / value pairs:

  • command can accept either a string or an array. Represents the command to dispatch
    • extra can accept an array of extra parameters to pass on to the dispatcher. This parameters will be available in the param property of the called Shell

return $this->dispatchShell([ 'command' => 'schema create DbAcl', 'extra' => ['param' => 'value'] ]);

or

return $this->dispatchShell([ 'command' => ['schema', 'create', 'DbAcl'], 'extra' => ['param' => 'value'] ]);

Returns

int

Links

https://book.cakephp.org/4/en/console-and-shells.html#invoking-other-shells-from-your-shell

err() public

err(array<string>|string $message, int $newlines = 1): int

Outputs a single or multiple error messages to stderr. If no parameters are passed outputs just a newline.

Parameters

array<string>|string $message

A string or an array of strings to output

int $newlines optional

Number of newlines to append

Returns

int

fetchTable() public

fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table

Convenience method to get a table instance.

Parameters

string|null $alias optional

The alias name you want to get. Should be in CamelCase format. If null then the value of $defaultTable property is used.

array<string, mixed> $options optional

The options you want to build the table with. If a table has already been loaded the registry options will be ignored.

Returns

Cake\ORM\Table

Throws

Cake\Core\Exception\CakeException
If `$alias` argument and `$defaultTable` property both are `null`.

See Also

\Cake\ORM\TableLocator::get()

getIo() public

getIo(): Cake\Console\ConsoleIo

Get the io object for this shell.

Returns

Cake\Console\ConsoleIo

getModelType() public

getModelType(): string

Get the model type to be used by this class

Returns

string

getOptionParser() public

getOptionParser(): Cake\Console\ConsoleOptionParser

Gets the option parser instance and configures it.

By overriding this method you can configure the ConsoleOptionParser before returning it.

Returns

Cake\Console\ConsoleOptionParser

Links

https://book.cakephp.org/4/en/console-and-shells.html#configuring-options-and-generating-help

getShellList() public

getShellList(): array

Gets the shell command listing.

Returns

array

getTableLocator() public

getTableLocator(): Cake\ORM\Locator\LocatorInterface

Gets the table locator.

Returns

Cake\ORM\Locator\LocatorInterface

hasMethod() public

hasMethod(string $name): bool

Check to see if this shell has a callable method by the given name.

Parameters

string $name

The method name to check.

Returns

bool

Links

https://book.cakephp.org/4/en/console-and-shells.html#shell-tasks

hasTask() public

hasTask(string $task): bool

Check to see if this shell has a task with the provided name.

Parameters

string $task

The task name to check.

Returns

bool

Links

https://book.cakephp.org/4/en/console-and-shells.html#shell-tasks

helper() public

helper(string $name, array<string, mixed> $config = []): Cake\Console\Helper

Render a Console Helper

Create and render the output for a helper object. If the helper object has not already been loaded, it will be loaded and constructed.

Parameters

string $name

The name of the helper to render

array<string, mixed> $config optional

Configuration data for the helper.

Returns

Cake\Console\Helper

hr() public

hr(int $newlines = 0, int $width = 63): void

Outputs a series of minus characters to the standard output, acts as a visual separator.

Parameters

int $newlines optional

Number of newlines to pre- and append

int $width optional

Width of the line, defaults to 63

Returns

void

Links

https://book.cakephp.org/4/en/console-and-shells.html#Shell::hr

in() public

in(string $prompt, array<string>|string|null $options = null, string|null $default = null): string|null

Prompts the user for input, and returns it.

Parameters

string $prompt

Prompt text.

array<string>|string|null $options optional

Array or string of options.

string|null $default optional

Default input value.

Returns

string|null

Links

https://book.cakephp.org/4/en/console-and-shells.html#Shell::in

info() public

info(array<string>|string $message, int $newlines = 1, int $level = Shell::NORMAL): int|null

Convenience method for out() that wraps message between tag

Parameters

array<string>|string $message

A string or an array of strings to output

int $newlines optional

Number of newlines to append

int $level optional

The message's output level, see above.

Returns

int|null

See Also

https://book.cakephp.org/4/en/console-and-shells.html#Shell::out

initialize() public

initialize(): void

Initializes the Shell acts as constructor for subclasses allows configuration of tasks prior to shell execution

Returns

void

Links

https://book.cakephp.org/4/en/console-and-shells.html#Cake\Console\ConsoleOptionParser::initialize

loadModel() public

loadModel(string|null $modelClass = null, string|null $modelType = null): Cake\Datasource\RepositoryInterface

Loads and constructs repository objects required by this object

Typically used to load ORM Table objects as required. Can also be used to load other types of repository objects your application uses.

If a repository provider does not return an object a MissingModelException will be thrown.

Parameters

string|null $modelClass optional

Name of model class to load. Defaults to $this->modelClass. The name can be an alias like 'Post' or FQCN like App\Model\Table\PostsTable::class.

string|null $modelType optional

The type of repository to load. Defaults to the getModelType() value.

Returns

Cake\Datasource\RepositoryInterface

Throws

Cake\Datasource\Exception\MissingModelException
If the model class cannot be found.
UnexpectedValueException
If $modelClass argument is not provided and ModelAwareTrait::$modelClass property value is empty.

loadTasks() public

loadTasks(): true

Loads tasks defined in public $tasks

Returns

true

log() public

log(string $message, string|int $level = LogLevel::ERROR, array|string $context = []): bool

Convenience method to write a message to Log. See Log::write() for more information on writing to logs.

Parameters

string $message

Log message.

string|int $level optional

Error level.

array|string $context optional

Additional log data relevant to this message.

Returns

bool

main() public @method

main(mixed ...$args): int|bool|null|void

Main entry method for the shell.

Parameters

...$args

Returns

int|bool|null|void

modelFactory() public

modelFactory(string $type, Cake\Datasource\Locator\LocatorInterface|callable $factory): void

Override a existing callable to generate repositories of a given type.

Parameters

string $type

The name of the repository type the factory function is for.

Cake\Datasource\Locator\LocatorInterface|callable $factory

The factory function used to create instances.

Returns

void

nl() public

nl(int $multiplier = 1): string

Returns a single or multiple linefeeds sequences.

Parameters

int $multiplier optional

Number of times the linefeed sequence should be repeated

Returns

string

Links

https://book.cakephp.org/4/en/console-and-shells.html#Shell::nl

out() public

out(array<string>|string $message, int $newlines = 1, int $level = Shell::NORMAL): int|null

Outputs a single or multiple messages to stdout. If no parameters are passed outputs just a newline.

Output levels

There are 3 built-in output level. Shell::QUIET, Shell::NORMAL, Shell::VERBOSE. The verbose and quiet output levels, map to the verbose and quiet output switches present in most shells. Using Shell::QUIET for a message means it will always display. While using Shell::VERBOSE means it will only display when verbose output is toggled.

Parameters

array<string>|string $message

A string or an array of strings to output

int $newlines optional

Number of newlines to append

int $level optional

The message's output level, see above.

Returns

int|null

Links

https://book.cakephp.org/4/en/console-and-shells.html#Shell::out

param() public

param(string $name): string|bool|null

Safely access the values in $this->params.

Parameters

string $name

The name of the parameter to get.

Returns

string|bool|null

parseDispatchArguments() public

parseDispatchArguments(array $args): array

Parses the arguments for the dispatchShell() method.

Parameters

array $args

Arguments fetch from the dispatchShell() method with func_get_args()

Returns

array

quiet() public

quiet(array<string>|string $message, int $newlines = 1): int|null

Output at all levels.

Parameters

array<string>|string $message

A string or an array of strings to output

int $newlines optional

Number of newlines to append

Returns

int|null

runCommand() public

runCommand(array $argv, bool $autoMethod = false, array $extra = []): int|bool|null

Runs the Shell with the provided argv.

Delegates calls to Tasks and resolves methods inside the class. Commands are looked up with the following order:

  • Method on the shell.
  • Matching task name.
  • main() method.

If a shell implements a main() method, all missing method calls will be sent to main() with the original method name in the argv.

For tasks to be invoked they must be exposed as subcommands. If you define any subcommands, you must define all the subcommands your shell needs, whether they be methods on this class or methods on tasks.

Parameters

array $argv

Array of arguments to run the shell with. This array should be missing the shell name.

bool $autoMethod optional

Set to true to allow any public method to be called even if it was not defined as a subcommand. This is used by ShellDispatcher to make building simple shells easy.

array $extra optional

Extra parameters that you can manually pass to the Shell to be dispatched. Built-in extra parameter is :

Returns

int|bool|null

Links

https://book.cakephp.org/4/en/console-and-shells.html#the-cakephp-console

setIo() public

setIo(Cake\Console\ConsoleIo $io): void

Set the io object for this shell.

Parameters

Cake\Console\ConsoleIo $io

The ConsoleIo object to use.

Returns

void

setModelType() public

setModelType(string $modelType): $this

Set the model type to be used by this class

Parameters

string $modelType

The model type

Returns

$this

setRootName() public

setRootName(string $name): $this

Set the root command name for help output.

Parameters

string $name

The name of the root command.

Returns

$this

setTableLocator() public

setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this

Sets the table locator.

Parameters

Cake\ORM\Locator\LocatorInterface $tableLocator

LocatorInterface instance.

Returns

$this

shortPath() public

shortPath(string $file): string

Makes absolute file path easier to read

Parameters

string $file

Absolute file path

Returns

string

Links

https://book.cakephp.org/4/en/console-and-shells.html#Shell::shortPath

startup() public

startup(): void

Starts up the Shell and displays the welcome message. Allows for checking and configuring prior to command or main execution

Override this method if you want to remove the welcome information, or otherwise modify the pre-command flow.

Returns

void

Links

https://book.cakephp.org/4/en/console-and-shells.html#Cake\Console\ConsoleOptionParser::startup

success() public

success(array<string>|string $message, int $newlines = 1, int $level = Shell::NORMAL): int|null

Convenience method for out() that wraps message between tag

Parameters

array<string>|string $message

A string or an array of strings to output

int $newlines optional

Number of newlines to append

int $level optional

The message's output level, see above.

Returns

int|null

See Also

https://book.cakephp.org/4/en/console-and-shells.html#Shell::out

verbose() public

verbose(array<string>|string $message, int $newlines = 1): int|null

Output at the verbose level.

Parameters

array<string>|string $message

A string or an array of strings to output

int $newlines optional

Number of newlines to append

Returns

int|null

warn() public

warn(array<string>|string $message, int $newlines = 1): int

Convenience method for err() that wraps message between tag

Parameters

array<string>|string $message

A string or an array of strings to output

int $newlines optional

Number of newlines to append

Returns

int

See Also

https://book.cakephp.org/4/en/console-and-shells.html#Shell::err

wrapText() public

wrapText(string $text, array<string, mixed>|int $options = []): string

Wrap a block of text. Allows you to set the width, and indenting on a block of text.

Options

  • width The width to wrap to. Defaults to 72
  • wordWrap Only wrap on words breaks (spaces) Defaults to true.
  • indent Indent the text with the string provided. Defaults to null.

Parameters

string $text

Text the text to format.

array<string, mixed>|int $options optional

Array of options to use, or an integer to wrap the text to.

Returns

string

See Also

\Cake\Utility\Text::wrap()

Links

https://book.cakephp.org/4/en/console-and-shells.html#Shell::wrapText

Property Detail

$OptionParser public

An instance of ConsoleOptionParser that has been configured for this class.

Type

Cake\Console\ConsoleOptionParser

$Tasks public

Task Collection for the command, used to create Tasks.

Type

Cake\Console\TaskRegistry

$_io protected

ConsoleIo instance.

Type

Cake\Console\ConsoleIo

$_modelFactories protected

A list of overridden model factory functions.

Type

array<callableCake\Datasource\Locator\LocatorInterface>

$_modelType protected

The model type to use.

Type

string

$_tableLocator protected

Table locator instance

Type

Cake\ORM\Locator\LocatorInterface|null

$_taskMap protected

Normalized map of tasks.

Type

array<string, array>

$args public

Contains arguments parsed from the command line.

Type

array

$command public

The command (method/task) that is being run.

Type

string|null

$defaultTable protected

This object's default table alias.

Type

string|null

$interactive public

If true, the script will ask for permission to perform actions.

Type

bool

$modelClass protected deprecated

This object's primary model class name. Should be a plural form. CakePHP will not inflect the name.

Example: For an object named 'Comments', the modelClass would be 'Comments'. Plugin classes should use Plugin.Comments style names to correctly load models from the correct plugin.

Use empty string to not use auto-loading on this object. Null auto-detects based on controller name.

Type

string|null

$name public

The name of the shell in camelized.

Type

string

$params public

Contains command switches parsed from the command line.

Type

array

$plugin public

The name of the plugin the shell belongs to. Is automatically set by ShellDispatcher when a shell is constructed.

Type

string

$rootName protected

The root command name used when generating help output.

Type

string

$taskNames public

Contains the loaded tasks

Type

array<string>

$tasks public

Contains tasks to load and instantiate

Type

array|bool

© 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/4.4/class-Cake.Shell.Task.CommandTask.html