Constants

CODE_ERROR

CODE_ERROR = 1 : integer

Default error code

CODE_SUCCESS

CODE_SUCCESS = 0 : integer

Default success code

VERBOSE

VERBOSE = \Cake\Console\ConsoleIo::VERBOSE : integer

Output constant making verbose shells.

NORMAL

NORMAL = \Cake\Console\ConsoleIo::NORMAL : integer

Output constant for making normal shells.

QUIET

QUIET = \Cake\Console\ConsoleIo::QUIET : integer

Output constants for making quiet shells.

Properties

$modelClass

$modelClass : string

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.

Type

string

$OptionParser

$OptionParser : \Cake\Console\ConsoleOptionParser

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

Type

\Cake\Console\ConsoleOptionParser

$interactive

$interactive : boolean

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

Type

boolean

$params

$params : array

Contains command switches parsed from the command line.

Type

array

$command

$command : string

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

Type

string

$args

$args : array

Contains arguments parsed from the command line.

Type

array

$name

$name : string

The name of the shell in camelized.

Type

string

$plugin

$plugin : string

The name of the plugin the shell belongs to.

Is automatically set by ShellDispatcher when a shell is constructed.

Type

string

$tasks

$tasks : array|boolean

Contains tasks to load and instantiate

Type

array|boolean

$taskNames

$taskNames : array

Contains the loaded tasks

Type

array

$Tasks

$Tasks : \Cake\Console\TaskRegistry

Task Collection for the command, used to create Tasks.

Type

\Cake\Console\TaskRegistry

$_modelFactories

$_modelFactories : array

A list of overridden model factory functions.

Type

array

$_modelType

$_modelType : string

The model type to use.

Type

string

$_taskMap

$_taskMap : array

Normalized map of tasks.

Type

array

$rootName

$rootName : string

The root command name used when generating help output.

Type

string

Methods

tableLocator()

tableLocator(\Cake\ORM\Locator\LocatorInterface|null  $tableLocator = null) : \Cake\ORM\Locator\LocatorInterface

Sets the table locator.

If no parameters are passed, it will return the currently used locator.

Parameters

\Cake\ORM\Locator\LocatorInterface|null $tableLocator

LocatorInterface instance.

Returns

\Cake\ORM\Locator\LocatorInterface

setTableLocator()

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

Sets the table locator.

Parameters

\Cake\ORM\Locator\LocatorInterface $tableLocator

LocatorInterface instance.

Returns

$this

log()

log(mixed  $msg, integer|string  $level = \Psr\Log\LogLevel::ERROR, string|array  $context = array()) : boolean

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

Parameters

mixed $msg

Log message.

integer|string $level

Error level.

string|array $context

Additional log data relevant to this message.

Returns

boolean —

Success of log write.

loadModel()

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

Name of model class to load. Defaults to $this->modelClass

string|null $modelType

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

Throws

\Cake\Datasource\Exception\MissingModelException

If the model class cannot be found.

\InvalidArgumentException

When using a type that has not been registered.

\UnexpectedValueException

If no model type has been defined

Returns

\Cake\Datasource\RepositoryInterface

The model instance created.

modelFactory()

modelFactory(string  $type, 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.

callable $factory

The factory function used to create instances.

getModelType()

getModelType() : string

Get the model type to be used by this class

Returns

string

setModelType()

setModelType(string  $modelType) : $this

Set the model type to be used by this class

Parameters

string $modelType

The model type

Returns

$this

modelType()

modelType(string|null  $modelType = null) : string|$this

Set or get the model type to be used by this class

Parameters

string|null $modelType

The model type or null to retrieve the current

Returns

string|$this

__construct()

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

Constructs this Shell instance.

Parameters

\Cake\Console\ConsoleIo|null $io

An io instance.

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

Table locator instance.

setRootName()

setRootName(string  $name) : $this

Set the root command name for help output.

Parameters

string $name

The name of the root command.

Returns

$this

getIo()

getIo() : \Cake\Console\ConsoleIo

Get the io object for this shell.

Returns

\Cake\Console\ConsoleIo

The current ConsoleIo object.

setIo()

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

Set the io object for this shell.

Parameters

\Cake\Console\ConsoleIo $io

The ConsoleIo object to use.

io()

io(\Cake\Console\ConsoleIo|null  $io = null) : \Cake\Console\ConsoleIo

Get/Set the io object for this shell.

Parameters

\Cake\Console\ConsoleIo|null $io

The ConsoleIo object to use.

Returns

\Cake\Console\ConsoleIo

The current ConsoleIo object.

initialize()

initialize() : void

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

startup()

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.

loadTasks()

loadTasks() : boolean

Loads tasks defined in public $tasks

Returns

boolean

hasTask()

hasTask(string  $task) : boolean

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

Parameters

string $task

The task name to check.

Returns

boolean —

Success

hasMethod()

hasMethod(string  $name) : boolean

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

Parameters

string $name

The method name to check.

Returns

boolean

dispatchShell()

dispatchShell() : integer

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

integer —

The cli command exit code. 0 is success.

parseDispatchArguments()

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 —

First value has to be an array of the command arguments. Second value has to be an array of extra parameter to pass on to the dispatcher

runCommand()

runCommand(array  $argv, boolean  $autoMethod = false, array  $extra = array()) : integer|boolean|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.

boolean $autoMethod

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

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

  • requested : if used, will prevent the Shell welcome message to be displayed

Returns

integer|boolean|null

getOptionParser()

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

__get()

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

Overload get for lazy building of tasks

Parameters

string $name

The task to get.

Returns

\Cake\Console\Shell

Object of Task

param()

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

Safely access the values in $this->params.

Parameters

string $name

The name of the parameter to get.

Returns

string|boolean|null —

Value. Will return null if it doesn't exist.

in()

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

Prompts the user for input, and returns it.

Parameters

string $prompt

Prompt text.

string|array|null $options

Array or string of options.

string|null $default

Default input value.

Returns

mixed —

Either the default value, or the user-provided input.

wrapText()

wrapText(string  $text, integer|array  $options = array()) : 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.

integer|array $options

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

Returns

string —

Wrapped / indented text

verbose()

verbose(string|array  $message, integer  $newlines = 1) : integer|boolean

Output at the verbose level.

Parameters

string|array $message

A string or an array of strings to output

integer $newlines

Number of newlines to append

Returns

integer|boolean —

The number of bytes returned from writing to stdout.

quiet()

quiet(string|array  $message, integer  $newlines = 1) : integer|boolean

Output at all levels.

Parameters

string|array $message

A string or an array of strings to output

integer $newlines

Number of newlines to append

Returns

integer|boolean —

The number of bytes returned from writing to stdout.

out()

out(string|array|null  $message = null, integer  $newlines = 1, integer  $level = \Cake\Console\Shell::NORMAL) : integer|boolean

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

string|array|null $message

A string or an array of strings to output

integer $newlines

Number of newlines to append

integer $level

The message's output level, see above.

Returns

integer|boolean —

The number of bytes returned from writing to stdout.

err()

err(string|array|null  $message = null, integer  $newlines = 1) : integer|boolean

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

Parameters

string|array|null $message

A string or an array of strings to output

integer $newlines

Number of newlines to append

Returns

integer|boolean —

The number of bytes returned from writing to stderr.

info()

info(string|array|null  $message = null, integer  $newlines = 1, integer  $level = \Cake\Console\Shell::NORMAL) : integer|boolean

Convenience method for out() that wraps message between <info /> tag

Parameters

string|array|null $message

A string or an array of strings to output

integer $newlines

Number of newlines to append

integer $level

The message's output level, see above.

Returns

integer|boolean —

The number of bytes returned from writing to stdout.

warn()

warn(string|array|null  $message = null, integer  $newlines = 1) : integer|boolean

Convenience method for err() that wraps message between <warning /> tag

Parameters

string|array|null $message

A string or an array of strings to output

integer $newlines

Number of newlines to append

Returns

integer|boolean —

The number of bytes returned from writing to stderr.

success()

success(string|array|null  $message = null, integer  $newlines = 1, integer  $level = \Cake\Console\Shell::NORMAL) : integer|boolean

Convenience method for out() that wraps message between <success /> tag

Parameters

string|array|null $message

A string or an array of strings to output

integer $newlines

Number of newlines to append

integer $level

The message's output level, see above.

Returns

integer|boolean —

The number of bytes returned from writing to stdout.

nl()

nl(integer  $multiplier = 1) : string

Returns a single or multiple linefeeds sequences.

Parameters

integer $multiplier

Number of times the linefeed sequence should be repeated

Returns

string

hr()

hr(integer  $newlines, integer  $width = 63) : void

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

Parameters

integer $newlines

Number of newlines to pre- and append

integer $width

Width of the line, defaults to 63

abort()

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

Displays a formatted error message and exits the application with status code 1

Parameters

string $message

The error message

integer $exitCode

The exit code for the shell task.

Throws

\Cake\Console\Exception\StopException

error()

error(string  $title, string|null  $message = null, integer  $exitCode = self::CODE_ERROR) : integer

Displays a formatted error message and exits the application with status code 1

Parameters

string $title

Title of the error

string|null $message

An optional error message

integer $exitCode

The exit code for the shell task.

Throws

\Cake\Console\Exception\StopException

Returns

integer —

Error code

clear()

clear() : void

Clear the console

createFile()

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

Creates a file at given path

Parameters

string $path

Where to put the file.

string $contents

Content to put in the file.

Returns

boolean —

Success

shortPath()

shortPath(string  $file) : string

Makes absolute file path easier to read

Parameters

string $file

Absolute file path

Returns

string —

short path

helper()

helper(string  $name, array  $settings = array()) : \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 $settings

Configuration data for the helper.

Returns

\Cake\Console\Helper

The created helper instance.

__debugInfo()

__debugInfo() : array

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

Returns

array

main()

main(mixed  $...$args) : integer|boolean|null

Parameters

mixed $...$args

Returns

integer|boolean|null

_mergeVars()

_mergeVars(array  $properties, array  $options = array()) : 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 $properties

An array of properties and the merge strategy for them.

array $options

The options to use when merging properties.

_mergeProperty()

_mergeProperty(string  $property, array  $parentClasses, array  $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 $parentClasses

An array of classes you want to merge with.

array $options

Options for merging the property, see _mergeVars()

_mergePropertyData()

_mergePropertyData(array  $current, array  $parent, boolean  $isAssoc) : mixed

Merge each of the keys in a property together.

Parameters

array $current

The current merged value.

array $parent

The parent class' value.

boolean $isAssoc

Whether or not the merging should be done in associative mode.

Returns

mixed —

The updated value.

_setModelClass()

_setModelClass(string  $name) : void

Set the modelClass and modelKey properties based on conventions.

If the properties are already set they will not be overwritten

Parameters

string $name

Class name.

_welcome()

_welcome() : void

Displays a header for the shell

_validateTasks()

_validateTasks() : void

Checks that the tasks in the task map are actually available

Throws

\RuntimeException

_setOutputLevel()

_setOutputLevel() : void

Set the output level based on the parameters.

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

_displayHelp()

_displayHelp(string  $command) : integer|boolean

Display the help in the correct format

Parameters

string $command

The command to get help for.

Returns

integer|boolean —

The number of bytes returned from writing to stdout.

wrapMessageWithType()

wrapMessageWithType(string  $messageType, string|array  $message) : array|string

Wraps a message with a given message type, e.g. <warning>

Parameters

string $messageType

The message type, e.g. "warning".

string|array $message

The message to wrap.

Returns

array|string —

The message wrapped with the given message type.

_stop()

_stop(integer|string  $status = self::CODE_SUCCESS) : void

Stop execution of the current script.

Raises a StopException to try and halt the execution.

Parameters

integer|string $status

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

Throws

\Cake\Console\Exception\StopException