Class PluginAssetsSymlinkCommand
Command for symlinking / copying plugin assets to app's webroot.
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
-
$args protected
Cake\Console\Arguments
Arguments
-
$defaultTable protected
string|null
This object's default table alias.
-
$io protected
Cake\Console\ConsoleIo
Console IO
-
$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.
Method Summary
-
__construct() public
Constructor
-
_copyDirectory() protected
Copy directory
-
_createDirectory() protected
Create directory
-
_createSymlink() protected
Create symlink
-
_list() protected
Get list of plugins to process. Plugins without a webroot directory are skipped.
-
_process() protected
Process plugins
-
_remove() protected
Remove folder/symlink.
-
_setModelClass() protected
Set the modelClass property based on conventions.
-
abort() public
Halt the current process with a StopException.
-
buildOptionParser() public
Get the option parser.
-
defaultName() public static
Get the command name.
-
displayHelp() protected
Output help content
-
execute() public
Execute the command
-
executeCommand() public
Execute another command with the provided set of arguments.
-
fetchModel() public
Fetch or construct a model instance from a locator.
-
fetchTable() public
Convenience method to get a table instance.
-
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.
-
getRootName() public
Get the root command name.
-
getTableLocator() public
Gets the table locator.
-
initialize() public
Hook method invoked by CakePHP when a command is about to be executed.
-
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.
-
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.
Method Detail
__construct() ¶ public
__construct()
Constructor
By default CakePHP will construct command objects when building the CommandCollection for your application.
_copyDirectory() ¶ protected
_copyDirectory(string $source, string $destination): bool
Copy directory
Parameters
-
string
$source Source directory
-
string
$destination Destination directory
Returns
bool
_createDirectory() ¶ protected
_createDirectory(string $dir): bool
Create directory
Parameters
-
string
$dir Directory name
Returns
bool
_createSymlink() ¶ protected
_createSymlink(string $target, string $link): bool
Create symlink
Parameters
-
string
$target Target directory
-
string
$link Link name
Returns
bool
_list() ¶ protected
_list(string|null $name = null): array<string, mixed>
Get list of plugins to process. Plugins without a webroot directory are skipped.
Parameters
-
string|null
$name optional Name of plugin for which to symlink assets. If null all plugins will be processed.
Returns
array<string, mixed>
_process() ¶ protected
_process(array<string, mixed> $plugins, bool $copy = false, bool $overwrite = false): void
Process plugins
Parameters
-
array<string, mixed>
$plugins List of plugins to process
-
bool
$copy optional Force copy mode. Default false.
-
bool
$overwrite optional Overwrite existing files.
Returns
void
_remove() ¶ protected
_remove(array<string, mixed> $config): bool
Remove folder/symlink.
Parameters
-
array<string, mixed>
$config Plugin config.
Returns
bool
_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
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
buildOptionParser() ¶ public
buildOptionParser(Cake\Console\ConsoleOptionParser $parser): Cake\Console\ConsoleOptionParser
Get the option parser.
Parameters
-
Cake\Console\ConsoleOptionParser
$parser The option parser to update
Returns
Cake\Console\ConsoleOptionParser
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
the default
name returned would be 'update_table'
.
Returns
string
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
Attempt to symlink plugin assets to app's webroot. If symlinking fails it fallbacks to copying the assets. For vendor namespaced plugin, parent folder for vendor name are created if required.
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
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
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
getTableLocator() ¶ public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Gets the table locator.
Returns
Cake\ORM\Locator\LocatorInterface
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
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
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
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