Skip to content

CLI Commands

Core ships these CLI tasks. Run them through your application entrypoint, for example ./bin/phalcon-kit cli user help. A task runs only when your CLI module has a task class with that name and the cli role grants the action: the App skeleton exposes user, scaffold, help, and its own cron. To expose another built-in task, add a class that extends it in your CLI module and grant it; see CLI Tasks.

namespace App\Modules\Cli\Tasks;

class CacheTask extends \PhalconKit\Modules\Cli\Tasks\CacheTask
{
}
'cli' => [
    'components' => [
        \App\Modules\Cli\Tasks\CacheTask::class => ['clear', 'help'],
    ],
],

Global Options

Options placed before cli apply to every task.

Phalcon Kit CLI

Usage:
  phalcon-kit [--help | --quiet | --verbose] [--debug] [--format=<format>] <module> <task> [<action>] [<params>...]
  phalcon-kit (-h | --help)
  phalcon-kit (-v | --version)
  phalcon-kit (-i | --info)

Options:
  -h --help               show this help message
  -v --version            print version number
  -i --info               print information
  -q --quiet              suppress output
  -V --verbose            increase verbosity
  -d --debug              enable debug mode
  --format=<format>       change output returned value format (json, serialize, dump, raw)

Tasks:
  cache                  Clear, check, or delete cache entries
  cron                   Run the scheduled task
  database               Optimize, truncate, drop, or seed configured tables
  data-life-cycle        Delete old data based on the data life cycle definitions
  help                   Print the usage of a task
  scaffold               Generate models, interfaces, enums, and controllers from the schema
  ts-scaffold            Generate TypeScript definitions from the models
  user                   Create users and manage passwords and roles

Run `phalcon-kit cli help <task>` for the actions and options of a task.

cache

Class: PhalconKit\Modules\Cli\Tasks\CacheTask

Usage:
  phalcon-kit cli cache clear
  phalcon-kit cli cache has <key>
  phalcon-kit cli cache delete <key>
  phalcon-kit cli cache delete-multiple [<key>...]

cron

Class: PhalconKit\Modules\Cli\Tasks\CronTask

Usage:
  phalcon-kit cli cron <action> [<params> ...]

Actions:
  main, hourly, daily, weekly, monthly  Empty by default; override them in your application task

data-life-cycle

Class: PhalconKit\Modules\Cli\Tasks\DataLifeCycleTask

Usage:
  phalcon-kit cli data-life-cycle <action> [<params> ...]

Actions:
  main [<tables> ...]    Apply the configured retention policies; table names limit the run
  models [<tables> ...]  Same as main, returning the per-table results without the `models` key

database

Class: PhalconKit\Modules\Cli\Tasks\DatabaseTask

Usage:
  phalcon-kit cli database main
  phalcon-kit cli database drop
  phalcon-kit cli database truncate
  phalcon-kit cli database fix-engine
  phalcon-kit cli database optimize
  phalcon-kit cli database analyze
  phalcon-kit cli database insert
  phalcon-kit cli database reset

Options:
  main:         fix-engine, optimize, analyze
  drop:         Drop deprecated tables
  truncate:     Truncate tables
  fix-engine:   Apply configured table engines
  optimize:     Run `OPTIMIZE TABLE`
  analyze:      Run `ANALYZE TABLE`
  insert:       Insert records
  reset:        Truncate configured tables, then insert configured records

Table lists and seed records come from application deployment configuration.
All operations are empty by default.

help

Class: PhalconKit\Modules\Cli\Tasks\HelpTask

Usage:
  phalcon-kit cli help cache
  phalcon-kit cli help cron
  phalcon-kit cli help database
  phalcon-kit cli help data-life-cycle
  phalcon-kit cli help scaffold
  phalcon-kit cli help ts-scaffold
  phalcon-kit cli help user

scaffold

Class: PhalconKit\Modules\Cli\Tasks\ScaffoldTask

Usage:
  phalcon-kit cli scaffold <action> [--force] [--directory=<directory>] [--namespace=<namespace>]
                              [--table=<table>] [--exclude=<exclude>] [--license=<license>]
                              [--src-dir=<src-dir>] [--controllers-dir=<controllers-dir>]
                              [--interfaces-dir=<interfaces-dir>] [--abstracts-dir=<abstracts-dir>]
                              [--models-dir=<models-dir>] [--enums-dir=<enums-dir>] [--tests-dir=<tests-dir>]
                              [--models-extend=<models-extend>] [--interfaces-extend=<interface-extend>]
                              [--controllers-extend=<controllers-extend>] [--tests-extend=<tests-extend>]
                              [--no-controllers] [--no-interfaces] [--no-model-interfaces] [--no-abstracts] [--no-models] [--no-enums] [--no-tests]
                              [--no-strict-types] [--no-license] [--no-comments] [--no-get-set-methods]
                              [--no-validations] [--no-relationships] [--no-column-map] [--no-set-source]
                              [--no-typings] [--granular-typings] [--add-raw-value-type] [--protected-properties]
                              [--boolean-columns=<table.column,...>]

Actions:
  run                    Generate the outputs the --no-* options leave enabled for the selected tables
  get-definitions <name> Return the class and file names generated for one table

Options:
  --boolean-columns=<table.column,...>        Explicit integer-backed boolean columns (no width/name inference)
  --force                                     Overwrite existing files
  --table=<table>                             Comma seperated list of table to generate
  --exclude=<table>                           Comma seperated list of table to exclude
  --namespace=<namespace>                     Root namespace of the project (Default to "App")
  --license=<license>                         Set your own license stamp (PHP Comment)

  --directory=<directory>                     Root directory path to generate new files (Default to "./")
  --src-dir=<src-dir>                         Source directory path to generate new files (Default to "src/")
  --controllers-dir=<controllers-dir>         Set your own controllers directory (Default: "Controllers")
  --interfaces-dir=<interfaces-dir>           Set your own interfaces directory (Default: "Interfaces")
  --abstracts-dir=<abstracts-dir>             Set your own abstract directory (Default: "Abstracts")
  --models-dir=<models-dir>                   Set your own models directory (Default: "Models")
  --enums-dir=<enums-dir>                     Set your own enums directory (Default: "Enums")
  --tests-dir=<tests-dir>                     Set your own tests directory (Default: "Tests")

  --models-extend=<models-extend>             Extend models with this base class (Default: "\PhalconKit\Models\ModelAbstract")
  --interfaces-extend=<interface-extend>      Extend models interfaces with this base interface (Default: "\PhalconKit\Models\ModelInterface")
  --controllers-extend=<controllers-extends>  Extend controllers with this base class (Default: "\PhalconKit\Mvc\Controller\Rest")
  --tests-extend=<tests-extends>              Extend tests with this base class (Default: "\PhalconKit\Tests\Unit\AbstractUnit")

  --no-controllers                            Do not generate controllers
  --no-interfaces                             Do not generate interfaces
  --no-model-interfaces                       Do not generate concrete model interfaces (keep app-owned ones)
  --no-abstracts                              Do not generate abstracts
  --no-models                                 Do not generate models
  --no-enums                                  Do not generate enums
  --no-tests                                  Do not generate tests

  --no-strict-types                           Do not generate declare(strict_types=1);
  --no-license                                Do not generate license stamps
  --no-comments                               Do not generate comments

  --no-get-set-methods                        Do not generate getter and setter methods in models
  --no-validations                            Do not generate default validations in models
  --no-relationships                          Do not generate default relationships in models
  --no-column-map                             Do not generate column map in models
  --no-set-source                             Do not call setSource() in models
  --no-typings                                Do not generate typings for properties in models
  --granular-typings                          Force the properties to `mixed` in models
  --add-raw-value-type                        Add the `RawValue` type to every property in models
  --protected-properties                      Make the properties `protected` in models

ts-scaffold

Class: PhalconKit\Modules\Cli\Tasks\TsScaffoldTask

Usage:
  phalcon-kit cli ts-scaffold <action> [<params>...] [--force] [--table=<table>] [--directory=<directory>] [--namespace=<namespace>]

Actions:
  run                           Generate TypeScript models, interfaces, and services
  generate-exports              Generate the index export files
  get-definitions <name>        Return the TypeScript definitions for one model

Options:
  --force                       Overwrite existing files, including models and services
  --directory=<directory>       SDK directory to generate into (Default: "./sdk/")
  --table=<table>               Comma separated list of tables to generate
  --namespace=<namespace>       Root namespace of the PHP models to read relations from (Default: "PhalconKit")

user

Class: PhalconKit\Modules\Cli\Tasks\UserTask

Usage:
  phalcon-kit cli user <action> [--password-stdin] [<params> ...]

Actions:
  create, password, role

Options:
  --password-stdin  Read the create/password secret from stdin instead of an argument.