abstract class DevCommand extends PolyCommand (View source)

A command that can be run from CLI or via an HTTP request in a dev/* route

Traits

Provides extensions to this object to integrate it with standard config API methods.

A class that can be instantiated or replaced via DI

Config options

can_run_in_cli bool

Defines whether this command can be run in the CLI via sake.

from  PolyCommand
can_run_in_browser bool

Defines whether this command can be run in the browser via a web request.

from  PolyCommand
permissions_for_browser_execution array

Properties

protected static string $commandName

Name of the command. Also used as the end of the URL segment for browser execution.

from  PolyCommand
protected static string $description

Description of what the command does. Can use symfony console styling.

from  PolyCommand

Methods

public static 
config()

Get a configuration accessor for this class. Short hand for Config::inst()->get($this->class, .....).

public
mixed
uninherited(string $name)

Gets the uninherited value for the given config option

public static 
create(mixed ...$args)

An implementation of the factory method, allows you to create an instance of a class

public static 
singleton(string $class = null)

Creates a class instance by the "singleton" design pattern.

public
string
getTitle()

Get the title for this command.

public
int
run(InputInterface $input, PolyOutput $output)

Execute this command.

public static 
string
getName()

Get the name of this command.

public static 
string
getDescription()

Get the description of this command. Includes unparsed symfony/console styling.

public static 
string
getHelp()

Return additional help context to avoid an overly long description.

public
array
getOptions()

Get input options that can be passed into the command.

public
array
getOptionsForTemplate()

No description

public static 
bool
canRunInCli()

Check whether this command can be run in CLI via sake

public static 
bool
canRunInBrowser()

Check whether this command can be run in the browser via a web request

protected
int
execute(InputInterface $input, PolyOutput $output)

The code for running this command.

protected
string
getHeading()

Content to output before command is executed.

Details

static Config_ForClass config()

Get a configuration accessor for this class. Short hand for Config::inst()->get($this->class, .....).

Return Value

Config_ForClass

mixed uninherited(string $name)

Gets the uninherited value for the given config option

Parameters

string $name

Return Value

mixed

static Injectable create(mixed ...$args)

An implementation of the factory method, allows you to create an instance of a class

This method will defer class substitution to the Injector API, which can be customised via the Config API to declare substitution classes.

This can be called in one of two ways - either calling via the class directly, or calling on Object and passing the class name as the first parameter. The following are equivalent: $list = DataList::create(SiteTree::class); $list = SiteTree::get();

Parameters

mixed ...$args

Return Value

Injectable

static Injectable singleton(string $class = null)

Creates a class instance by the "singleton" design pattern.

It will always return the same instance for this class, which can be used for performance reasons and as a simple way to access instance methods which don't rely on instance data (e.g. the custom SilverStripe static handling).

Parameters

string $class

Optional classname to create, if the called class should not be used

Return Value

Injectable

The singleton instance

abstract string getTitle()

Get the title for this command.

Return Value

string

int run(InputInterface $input, PolyOutput $output)

Execute this command.

Output should be agnostic - do not include explicit HTML in the output unless there is no API on PolyOutput for what you want to do (in which case use the writeForHtml() method).

Use symfony/console ANSI formatting to style the output. See https://symfony.com/doc/current/console/coloring.html

Parameters

InputInterface $input
PolyOutput $output

Return Value

int

0 if everything went fine, or an exit code

static string getName()

Get the name of this command.

Return Value

string

static string getDescription()

Get the description of this command. Includes unparsed symfony/console styling.

Return Value

string

static string getHelp()

Return additional help context to avoid an overly long description.

Return Value

string

array getOptions()

Get input options that can be passed into the command.

In CLI execution these will be passed as flags. In HTTP execution these will be passed in the query string.

Return Value

array

array getOptionsForTemplate()

No description

Return Value

array

static bool canRunInCli()

Check whether this command can be run in CLI via sake

Return Value

bool

static bool canRunInBrowser()

Check whether this command can be run in the browser via a web request

Return Value

bool

abstract protected int execute(InputInterface $input, PolyOutput $output)

The code for running this command.

Output should be agnostic - do not include explicit HTML in the output unless there is no API on PolyOutput for what you want to do (in which case use the writeForHtml() method).

Use symfony/console ANSI formatting to style the output. See https://symfony.com/doc/current/console/coloring.html

Parameters

InputInterface $input
PolyOutput $output

Return Value

int

0 if everything went fine, or an exit code

abstract protected string getHeading()

Content to output before command is executed.

In HTML format this will be an h2.

Return Value

string