Neuron-PHP

ControllerCommand extends Command
in package

CLI command for generating an attribute-routed MVC controller and its field-aware views.

Routing is provided by PHP route attributes on the generated controller, so no routes.yaml entry is required.

Table of Contents

Properties

$arguments  : array<string|int, mixed>
$input  : Input
$inputReader  : IInputReader|null
$options  : array<string|int, mixed>
$output  : Output
$_Messages  : array<string|int, mixed>
$_ProjectPath  : string
$fs  : IFileSystem
$scaffolder  : ResourceScaffolder
$templates  : ITemplateEngine

Methods

__construct()  : mixed
configure()  : void
Configure the command
execute()  : int
Execute the command
getArguments()  : array<string|int, mixed>
Get all configured arguments
getDescription()  : string
Get the command description
getHelp()  : string
Get the help text for this command
getName()  : string
Get the command name
getOptions()  : array<string|int, mixed>
Get all configured options
hasArgument()  : bool
Check if the command has a specific argument
hasOption()  : bool
Check if the command has a specific option
setInput()  : self
Set the input instance
setInputReader()  : self
Set the input reader (for dependency injection, especially in tests).
setOutput()  : self
Set the output instance
validate()  : void
Validate that required arguments are present
addArgument()  : self
Add an argument to the command
addOption()  : self
Add an option to the command
choice()  : string
Prompt user to select from a list of options.
confirm()  : bool
Ask user for yes/no confirmation.
getInputReader()  : IInputReader
Get the input reader instance.
prompt()  : string
Prompt user for input.
secret()  : string
Prompt for sensitive input without echoing to console.
buildInfo()  : array<string|int, mixed>
Build the placeholder/info array for the controller.
databaseConfig()  : array<string|int, mixed>
Read the database configuration section from the project settings.
decorateWithConventions()  : FieldSet
Prepend an auto-increment primary key and append timestamp columns.
parseControllerName()  : array<string|int, mixed>
Parse controller name into naming components.
pluralize()  : string
Simple pluralization
resolveFieldSet()  : FieldSet
Resolve a FieldSet from --from-table introspection or --fields.
underscore()  : string
Convert PascalCase to snake_case

Properties

$arguments

protected array<string|int, mixed> $arguments = []

$options

protected array<string|int, mixed> $options = []

Methods

execute()

Execute the command

public execute([array<string|int, mixed> $Parameters = [] ]) : int
Parameters
$Parameters : array<string|int, mixed> = []
Return values
int

Exit code (0 for success)

getArguments()

Get all configured arguments

public getArguments() : array<string|int, mixed>
Return values
array<string|int, mixed>

getDescription()

Get the command description

public getDescription() : string
Tags
inheritDoc
Return values
string

getHelp()

Get the help text for this command

public getHelp() : string
Return values
string

getName()

Get the command name

public getName() : string
Tags
inheritDoc
Return values
string

getOptions()

Get all configured options

public getOptions() : array<string|int, mixed>
Return values
array<string|int, mixed>

hasArgument()

Check if the command has a specific argument

public hasArgument(string $name) : bool
Parameters
$name : string
Return values
bool

hasOption()

Check if the command has a specific option

public hasOption(string $name) : bool
Parameters
$name : string
Return values
bool

setInput()

Set the input instance

public setInput(Input $input) : self
Parameters
$input : Input
Return values
self

setInputReader()

Set the input reader (for dependency injection, especially in tests).

public setInputReader(IInputReader $inputReader) : self

This allows tests to inject a TestInputReader with pre-programmed responses instead of requiring actual user input.

Parameters
$inputReader : IInputReader
Return values
self

setOutput()

Set the output instance

public setOutput(Output $output) : self
Parameters
$output : Output
Return values
self

validate()

Validate that required arguments are present

public validate() : void
Tags
throws
InvalidArgumentException

addArgument()

Add an argument to the command

protected addArgument(string $name[, bool $required = false ][, string $description = '' ][, mixed $default = null ]) : self
Parameters
$name : string

Argument name

$required : bool = false

Whether the argument is required

$description : string = ''

Description of the argument

$default : mixed = null

Default value if not provided

Return values
self

addOption()

Add an option to the command

protected addOption(string $name[, string|null $shortcut = null ][, bool $hasValue = false ][, string $description = '' ][, mixed $default = null ]) : self
Parameters
$name : string

Option name (long form)

$shortcut : string|null = null

Option shortcut (single character)

$hasValue : bool = false

Whether the option accepts a value

$description : string = ''

Description of the option

$default : mixed = null

Default value if not provided

Return values
self

choice()

Prompt user to select from a list of options.

protected choice(string $message, array<string|int, string> $options[, string|null $default = null ]) : string

Convenience method that delegates to the input reader. Users can select by entering either the option index (numeric) or the exact option text.

Example:

$env = $this->choice(
    "Select environment:",
    ['development', 'staging', 'production'],
    'development'
);
Parameters
$message : string

The prompt message

$options : array<string|int, string>

Available options

$default : string|null = null

Default option (will be marked with *)

Return values
string

The selected option

confirm()

Ask user for yes/no confirmation.

protected confirm(string $message[, bool $default = false ]) : bool

Convenience method that delegates to the input reader. Accepts: y, yes, true, 1 (case-insensitive) as positive responses.

Example:

if( $this->confirm( "Delete all files?" ) ) {
    // User confirmed
}
Parameters
$message : string

The confirmation message

$default : bool = false

Default value if user just presses enter

Return values
bool

True if user confirms, false otherwise

getInputReader()

Get the input reader instance.

protected getInputReader() : IInputReader

Creates a default StdinInputReader if not already set. This enables testable CLI commands by abstracting user input.

If output hasn't been set, a default Output instance will be created automatically.

Return values
IInputReader

prompt()

Prompt user for input.

protected prompt(string $message) : string

Convenience method that delegates to the input reader.

Example:

$name = $this->prompt( "Enter your name: " );
Parameters
$message : string

The prompt message to display

Return values
string

The user's response (trimmed)

secret()

Prompt for sensitive input without echoing to console.

protected secret(string $message) : string

Convenience method that delegates to the input reader. Note: Secret input hiding only works on Unix-like systems.

Example:

$password = $this->secret( "Enter password: " );
Parameters
$message : string

The prompt message

Return values
string

The user's input (trimmed)

buildInfo()

Build the placeholder/info array for the controller.

private buildInfo(string $controllerName) : array<string|int, mixed>
Parameters
$controllerName : string
Return values
array<string|int, mixed>

databaseConfig()

Read the database configuration section from the project settings.

private databaseConfig() : array<string|int, mixed>
Tags
throws
Exception
Return values
array<string|int, mixed>

parseControllerName()

Parse controller name into naming components.

private parseControllerName(string $name) : array<string|int, mixed>
Parameters
$name : string
Return values
array<string|int, mixed>

pluralize()

Simple pluralization

private pluralize(string $word) : string
Parameters
$word : string
Return values
string

resolveFieldSet()

Resolve a FieldSet from --from-table introspection or --fields.

private resolveFieldSet(array<string|int, mixed> $info) : FieldSet
Parameters
$info : array<string|int, mixed>
Tags
throws
Exception
Return values
FieldSet

underscore()

Convert PascalCase to snake_case

private underscore(string $word) : string
Parameters
$word : string
Return values
string
On this page

Search results