Class PolicyCommand
Bake task for building policy classes
Property Summary
-
$_modelFactories protected
array<callable|Cake\Datasource\Locator\LocatorInterface>A list of overridden model factory functions.
-
$_modelType protected
stringThe model type to use.
-
$_tableLocator protected
Cake\ORM\Locator\LocatorInterface|nullTable locator instance
-
$connection public
string -
$defaultTable protected
string|nullThis object's default table alias.
-
$force public
bool -
$modelClass protected
string|nullThis object's primary model class name. Should be a plural form. CakePHP will not inflect the name.
-
$name protected
stringThe name of this command.
-
$pathFragment public
stringPath to Policy directory
-
$plugin public
string -
$theme public
string|null -
$type protected
string
Method Summary
-
__construct() public
Constructor
-
_camelize() protected
Creates a camelized version of $name
-
_entityName() protected
Creates the proper entity name (singular) for the specified name
-
_fixtureName() protected
Creates a fixture name
-
_getBakeThemes() protected
Get available bake themes
-
_getName() protected
Handles splitting up the plugin prefix and classname.
-
_modelKey() protected
Creates the proper underscored model key for associations
-
_modelNameFromKey() protected
Creates the proper model name from a foreign key
-
_pluginNamespace() protected
Return plugin's namespace
-
_pluginPath() protected
Find the correct path for a plugin. Scans $pluginPaths for the plugin you want.
-
_pluralHumanName() protected
Creates the plural human name used in views
-
_setCommonOptions() protected
Set common options used by all bake tasks.
-
_setModelClass() protected
Set the modelClass property based on conventions.
-
_singularHumanName() protected
Creates the singular human name used in views
-
_singularName() protected
Creates the singular name for use in views.
-
_variableName() protected
Creates the plural variable name for views
-
abort() public
Halt the current process with a StopException.
-
bake() protected
Generate a class stub
-
bakeTest() public
Do nothing (for now)
-
buildOptionParser() public
Gets the option parser instance and configures it.
-
createTemplateRenderer() public
Creates a new instance of TemplateRenderer with theme set.
-
defaultName() public static
Get the command name.
-
deleteEmptyFile() protected
Delete empty file in a given path
-
displayHelp() protected
Output help content
-
execute() public
Execute the command.
-
executeCommand() public
Execute another command with the provided set of arguments.
-
extractCommonProperties() protected
Pull common/frequently used arguments & options into properties so that method signatures can be simpler.
-
fetchModel() public
Fetch or construct a model instance from a locator.
-
fetchTable() public
Convenience method to get a table instance.
-
fileName() public
Get the generated object's filename without the leading path.
-
getDescription() public static
Get the command description.
-
getModelType() public
Get the model type to be used by this class
-
getName() public
Get the command name.
-
getOptionParser() public
Get the option parser.
-
getPath() public
Gets the path for output. Checks the plugin property and returns the correct path.
-
getPrefix() protected
Get the prefix name.
-
getRootName() public
Get the root command name.
-
getTableLocator() public
Gets the table locator.
-
getTemplatePath() public
Gets the path to the template path for the application or plugin.
-
initialize() public
Hook method invoked by CakePHP when a command is about to be executed.
-
isValidColumnName() protected
Check if a column name is valid.
-
loadModel() public deprecated
Fetch or construct a model and set it to a property on this object.
-
log() public
Convenience method to write a message to Log. See Log::write() for more information on writing to logs.
-
modelFactory() public
Override a existing callable to generate repositories of a given type.
-
name() public
Get the generated object's name.
-
parseFile() protected
Parses a file if it exists.
-
run() public
Run the command.
-
setModelType() public
Set the model type to be used by this class
-
setName() public
Set the name this command uses in the collection.
-
setOutputLevel() protected
Set the output level based on the Arguments.
-
setTableLocator() public
Sets the table locator.
-
template() public
Get the template name.
-
templateData() public
Get template data.
-
writeFile() protected
Write file contents out to path and prompt user with options with file exists.
Method Detail
__construct() ¶ public
__construct()
Constructor
By default CakePHP will construct command objects when building the CommandCollection for your application.
_camelize() ¶ protected
_camelize(string $name): string
Creates a camelized version of $name
Parameters
-
string$name name
Returns
string_entityName() ¶ protected
_entityName(string $name): string
Creates the proper entity name (singular) for the specified name
Parameters
-
string$name Name
Returns
string_fixtureName() ¶ protected
_fixtureName(string $name): string
Creates a fixture name
Parameters
-
string$name Model class name
Returns
string_getName() ¶ protected
_getName(string $name): string
Handles splitting up the plugin prefix and classname.
Sets the plugin parameter and plugin property.
Parameters
-
string$name The name to possibly split.
Returns
string_modelKey() ¶ protected
_modelKey(string $name): string
Creates the proper underscored model key for associations
If the input contains a dot, assume that the right side is the real table name.
Parameters
-
string$name Model class name
Returns
string_modelNameFromKey() ¶ protected
_modelNameFromKey(string $key): string
Creates the proper model name from a foreign key
Parameters
-
string$key Foreign key
Returns
string_pluginNamespace() ¶ protected
_pluginNamespace(string $pluginName): string
Return plugin's namespace
Parameters
-
string$pluginName Plugin name
Returns
string_pluginPath() ¶ protected
_pluginPath(string $pluginName): string
Find the correct path for a plugin. Scans $pluginPaths for the plugin you want.
Parameters
-
string$pluginName Name of the plugin you want ie. DebugKit
Returns
string_pluralHumanName() ¶ protected
_pluralHumanName(string $name): string
Creates the plural human name used in views
Parameters
-
string$name Controller name
Returns
string_setCommonOptions() ¶ protected
_setCommonOptions(Cake\Console\ConsoleOptionParser $parser): Cake\Console\ConsoleOptionParser
Set common options used by all bake tasks.
Parameters
-
Cake\Console\ConsoleOptionParser$parser Options parser.
Returns
Cake\Console\ConsoleOptionParser_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_singularHumanName() ¶ protected
_singularHumanName(string $name): string
Creates the singular human name used in views
Parameters
-
string$name Controller name
Returns
string_singularName() ¶ protected
_singularName(string $name): string
Creates the singular name for use in views.
Parameters
-
string$name Name to use
Returns
string_variableName() ¶ protected
_variableName(string $name): string
Creates the plural variable name for views
Parameters
-
string$name Name to use
Returns
stringabort() ¶ public
abort(int $code = self::CODE_ERROR): void
Halt the current process with a StopException.
Parameters
-
int$code optional The exit code to use.
Returns
voidThrows
Cake\Console\Exception\StopExceptionbake() ¶ protected
bake(string $name, Cake\Console\Arguments $args, Cake\Console\ConsoleIo $io): void
Generate a class stub
Parameters
-
string$name The class name
-
Cake\Console\Arguments$args The console arguments
-
Cake\Console\ConsoleIo$io The console io
Returns
voidbakeTest() ¶ public
bakeTest(string $className, Cake\Console\Arguments $args, Cake\Console\ConsoleIo $io): void
Do nothing (for now)
Parameters
-
string$className The class to bake a test for.
-
Cake\Console\Arguments$args The arguments object
-
Cake\Console\ConsoleIo$io The consoleio object
Returns
voidbuildOptionParser() ¶ public
buildOptionParser(Cake\Console\ConsoleOptionParser $parser): Cake\Console\ConsoleOptionParser
Gets the option parser instance and configures it.
Parameters
-
Cake\Console\ConsoleOptionParser$parser The parser to update.
Returns
Cake\Console\ConsoleOptionParsercreateTemplateRenderer() ¶ public
createTemplateRenderer(): Bake\Utility\TemplateRenderer
Creates a new instance of TemplateRenderer with theme set.
Returns
Bake\Utility\TemplateRendererdefaultName() ¶ public static
defaultName(): string
Get the command name.
Returns the command name based on class name.
For e.g. for a command with class name UpdateTableCommand or BakeUpdateTableCommand
the default name returned would be 'bake update_table'.
Returns
stringdeleteEmptyFile() ¶ protected
deleteEmptyFile(string $path, Cake\Console\ConsoleIo $io): void
Delete empty file in a given path
Parameters
-
string$path Path to folder which contains 'empty' file.
-
Cake\Console\ConsoleIo$io ConsoleIo to delete file with.
Returns
voiddisplayHelp() ¶ protected
displayHelp(Cake\Console\ConsoleOptionParser $parser, Cake\Console\Arguments $args, Cake\Console\ConsoleIo $io): void
Output help content
Parameters
-
Cake\Console\ConsoleOptionParser$parser The option parser.
-
Cake\Console\Arguments$args The command arguments.
-
Cake\Console\ConsoleIo$io The console io
Returns
voidexecute() ¶ public
execute(Cake\Console\Arguments $args, Cake\Console\ConsoleIo $io): int|null
Execute the command.
Parameters
-
Cake\Console\Arguments$args The command arguments.
-
Cake\Console\ConsoleIo$io The console io
Returns
int|nullexecuteCommand() ¶ public
executeCommand(Cake\Console\CommandInterface|string $command, array $args = [], Cake\Console\ConsoleIo|null $io = null): int|null
Execute another command with the provided set of arguments.
If you are using a string command name, that command's dependencies will not be resolved with the application container. Instead you will need to pass the command as an object with all of its dependencies.
Parameters
-
Cake\Console\CommandInterface|string$command The command class name or command instance.
-
array$args optional The arguments to invoke the command with.
-
Cake\Console\ConsoleIo|null$io optional The ConsoleIo instance to use for the executed command.
Returns
int|nullextractCommonProperties() ¶ protected
extractCommonProperties(Cake\Console\Arguments $args): void
Pull common/frequently used arguments & options into properties so that method signatures can be simpler.
Parameters
-
Cake\Console\Arguments$args Arguments to extract
Returns
voidfetchModel() ¶ public
fetchModel(string|null $modelClass = null, string|null $modelType = null): Cake\Datasource\RepositoryInterface
Fetch or construct a model instance from a locator.
Uses a modelFactory based on $modelType to fetch and construct a RepositoryInterface
and return it. The default modelType can be defined with setModelType().
Unlike loadModel() this method will not set an object property.
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 likeApp\Model\Table\PostsTable::class.-
string|null$modelType optional The type of repository to load. Defaults to the getModelType() value.
Returns
Cake\Datasource\RepositoryInterfaceThrows
Cake\Datasource\Exception\MissingModelExceptionIf the model class cannot be found.
UnexpectedValueExceptionIf $modelClass argument is not provided and ModelAwareTrait::$modelClass property value is empty.
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
nullthen 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\TableThrows
Cake\Core\Exception\CakeExceptionIf `$alias` argument and `$defaultTable` property both are `null`.
See Also
fileName() ¶ public
fileName(string $name): string
Get the generated object's filename without the leading path.
Parameters
-
string$name
Returns
stringgetDescription() ¶ public static
getDescription(): string
Get the command description.
Returns
stringgetModelType() ¶ public
getModelType(): string
Get the model type to be used by this class
Returns
stringgetOptionParser() ¶ public
getOptionParser(): Cake\Console\ConsoleOptionParser
Get the option parser.
You can override buildOptionParser() to define your options & arguments.
Returns
Cake\Console\ConsoleOptionParserThrows
RuntimeExceptionWhen the parser is invalid
getPath() ¶ public
getPath(Cake\Console\Arguments $args): string
Gets the path for output. Checks the plugin property and returns the correct path.
Parameters
-
Cake\Console\Arguments$args Arguments instance to read the prefix option from.
Returns
stringgetPrefix() ¶ protected
getPrefix(Cake\Console\Arguments $args): string
Get the prefix name.
Handles camelcasing each namespace in the prefix path.
Parameters
-
Cake\Console\Arguments$args Arguments instance to read the prefix option from.
Returns
stringgetTableLocator() ¶ public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Gets the table locator.
Returns
Cake\ORM\Locator\LocatorInterfacegetTemplatePath() ¶ public
getTemplatePath(Cake\Console\Arguments $args, string|null $container = null): string
Gets the path to the template path for the application or plugin.
Parameters
-
Cake\Console\Arguments$args Arguments instance to read the prefix option from.
-
string|null$container optional The container directory in the templates directory.
Returns
stringinitialize() ¶ public
initialize(): void
Hook method invoked by CakePHP when a command is about to be executed.
Override this method and implement expensive/important setup steps that should not run on every command run. This method will be called before the options and arguments are validated and processed.
Returns
voidisValidColumnName() ¶ protected
isValidColumnName(string $name): bool
Check if a column name is valid.
The Regex used here basically states that:
- the column name has to start with an ASCII character (lower or upper case) or an underscore and
- further characters are allowed to be either lower or upper case ASCII characters, numbers or underscores.
Parameters
-
string$name The name of the column.
Returns
boolloadModel() ¶ public
loadModel(string|null $modelClass = null, string|null $modelType = null): Cake\Datasource\RepositoryInterface
Fetch or construct a model and set it to a property on this object.
Uses a modelFactory based on $modelType to fetch and construct a RepositoryInterface
and set it as a property on the current object. The default modelType
can be defined with setModelType().
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 likeApp\Model\Table\PostsTable::class.-
string|null$modelType optional The type of repository to load. Defaults to the getModelType() value.
Returns
Cake\Datasource\RepositoryInterfaceThrows
Cake\Datasource\Exception\MissingModelExceptionIf the model class cannot be found.
UnexpectedValueExceptionIf $modelClass argument is not provided and ModelAwareTrait::$modelClass property value is empty.
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
boolmodelFactory() ¶ 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
voidparseFile() ¶ protected
parseFile(string $path): Bake\CodeGen\ParsedFile|null
Parses a file if it exists.
Parameters
-
string$path File path
Returns
Bake\CodeGen\ParsedFile|nullrun() ¶ public
run(array $argv, Cake\Console\ConsoleIo $io): int|null
Run the command.
Parameters
-
array$argv -
Cake\Console\ConsoleIo$io
Returns
int|nullsetModelType() ¶ public
setModelType(string $modelType): $this
Set the model type to be used by this class
Parameters
-
string$modelType The model type
Returns
$thissetName() ¶ public
setName(string $name): $this
Set the name this command uses in the collection.
Generally invoked by the CommandCollection when the command is added. Required to have at least one space in the name so that the root command can be calculated.
Parameters
-
string$name
Returns
$thissetOutputLevel() ¶ protected
setOutputLevel(Cake\Console\Arguments $args, Cake\Console\ConsoleIo $io): void
Set the output level based on the Arguments.
Parameters
-
Cake\Console\Arguments$args The command arguments.
-
Cake\Console\ConsoleIo$io The console io
Returns
voidsetTableLocator() ¶ public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
Sets the table locator.
Parameters
-
Cake\ORM\Locator\LocatorInterface$tableLocator LocatorInterface instance.
Returns
$thistemplateData() ¶ public
templateData(Cake\Console\Arguments $arguments): array
Get template data.
Parameters
-
Cake\Console\Arguments$arguments
Returns
arraywriteFile() ¶ protected
writeFile(Cake\Console\ConsoleIo $io, string $path, string $contents, bool $forceOverwrite = false, bool $skipIfUnchnged = true): bool
Write file contents out to path and prompt user with options with file exists.
Parameters
-
Cake\Console\ConsoleIo$io Console io
-
string$path The path to create the file at
-
string$contents The contents to put into the file
-
bool$forceOverwrite optional Whether the file should be overwritten without prompting the user
-
bool$skipIfUnchnged optional Skip writing output if the contents match existing file
Returns
boolThrows
Cake\Console\Exception\StopExceptionWhen `q` is given as an answer to whether a file should be overwritten.
Property Detail
$_modelFactories ¶ protected
A list of overridden model factory functions.
Type
array<callable|Cake\Datasource\Locator\LocatorInterface>$modelClass ¶ protected
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