Class PolicyCommand
Bake task for building policy classes
Property Summary
-
$_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
-
$connection public
string
-
$defaultTable protected
string|null
This object's default table alias.
-
$force public
bool
-
$modelClass protected
string|null
This object's primary model class name. Should be a plural form. CakePHP will not inflect the name.
-
$name protected
string
The name of this command.
-
$pathFragment public
string
Path 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
string
abort() ¶ 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
void
Throws
Cake\Console\Exception\StopException
bake() ¶ 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
void
bakeTest() ¶ 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
void
buildOptionParser() ¶ 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\ConsoleOptionParser
createTemplateRenderer() ¶ public
createTemplateRenderer(): Bake\Utility\TemplateRenderer
Creates a new instance of TemplateRenderer with theme set.
Returns
Bake\Utility\TemplateRenderer
defaultName() ¶ 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
string
deleteEmptyFile() ¶ 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
void
displayHelp() ¶ 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
void
execute() ¶ 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|null
executeCommand() ¶ 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|null
extractCommonProperties() ¶ 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
void
fetchModel() ¶ 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\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.
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
fileName() ¶ public
fileName(string $name): string
Get the generated object's filename without the leading path.
Parameters
-
string
$name
Returns
string
getDescription() ¶ public static
getDescription(): string
Get the command description.
Returns
string
getModelType() ¶ public
getModelType(): string
Get the model type to be used by this class
Returns
string
getOptionParser() ¶ public
getOptionParser(): Cake\Console\ConsoleOptionParser
Get the option parser.
You can override buildOptionParser() to define your options & arguments.
Returns
Cake\Console\ConsoleOptionParser
Throws
RuntimeException
When 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
string
getPrefix() ¶ 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
string
getTableLocator() ¶ public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Gets the table locator.
Returns
Cake\ORM\Locator\LocatorInterface
getTemplatePath() ¶ 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
string
initialize() ¶ 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
void
isValidColumnName() ¶ 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
bool
loadModel() ¶ 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\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.
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
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
parseFile() ¶ protected
parseFile(string $path): Bake\CodeGen\ParsedFile|null
Parses a file if it exists.
Parameters
-
string
$path File path
Returns
Bake\CodeGen\ParsedFile|null
run() ¶ public
run(array $argv, Cake\Console\ConsoleIo $io): int|null
Run the command.
Parameters
-
array
$argv -
Cake\Console\ConsoleIo
$io
Returns
int|null
setModelType() ¶ public
setModelType(string $modelType): $this
Set the model type to be used by this class
Parameters
-
string
$modelType The model type
Returns
$this
setName() ¶ 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
$this
setOutputLevel() ¶ 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
void
setTableLocator() ¶ public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
Sets the table locator.
Parameters
-
Cake\ORM\Locator\LocatorInterface
$tableLocator LocatorInterface instance.
Returns
$this
templateData() ¶ public
templateData(Cake\Console\Arguments $arguments): array
Get template data.
Parameters
-
Cake\Console\Arguments
$arguments
Returns
array
writeFile() ¶ 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
bool
Throws
Cake\Console\Exception\StopException
When `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<callableCake\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