Command Line Tool

The optional prado-cli.php PHP script file in the bin directory provides command line tools to perform various tedious takes in Prado. The prado-cli.php can be used to create Prado project skeletons, create initial test fixtures, and access to an interactive PHP shell.

Requirements

To use the command line tool, you need to use your command prompt, command console or terminal. In addition, PHP must be able to execute PHP scripts from the command line.

Usage

Inside you application's protected directory, If you type ./vendor/bin/prado-cli, you should see the following information.

Command line tools for Prado 4.2.0.
usage: php prado-cli.php command[/action] <parameter> [optional]

example: php prado-cli.php cache/flush-all
example: prado-cli help
example: prado-cli cron/tasks

The following options are available:
  -d=<folder>       Loads the configuration.xml/php from <folder>
  -q=<level>        Quiets the output to <level> [1..3]

The following commands are available:
 - cache                       Allows you to flush the cache(s).
     cache/index               Displays the cache modules that can be flushed.
     cache/flush               Flushes the specified ICache modules.
     cache/flush-all           Flushes all application ICache modules.

 - help                        Provides help information about shell commands.
     help/index                Displays available commands or detailed command information.

 - shell                       Provides PHP Interactive Shell Interpreter.
     shell/index               Runs a PHP interactive interpreter after Initializing the Prado application.

 - activerecord                Provides Active Record skeleton generation.
     activerecord/generate     Generate Active Record skeleton for <table> to <output>. May also generate [soap] properties.
     activerecord/generate-all Generate Active Record skeleton for all Tables to <output>. May also generate [soap] properties.
                               Generated Classes are named like the Table with optional [Prefix] and/or [Suffix].
                               [Overwrite] is used to overwrite existing Files.

To see the help of each command, enter:

  prado-cli help <command-name>

The <parameter> are required parameters and [optional] are optional parameters.

Interactive Shell

The interactive shell allows you to evaluate PHP statements from the command line. The prado-cli.php script can be used to start the shell and load an existing Prado project. For example, let us load the blog demo project. Assume that your command line is in the prado distribution directory and you type.

$: php bin/prado-cli.php shell demos/blog
The output should be
Command line tools for Prado 4.2.0.
Psy Shell v0.11.2 (PHP 7.4.28 — cli) by Justin Hileman
>>>
Then we will get an instance of the Prado blog application, and from that instance we want an instance of the 'data' module.
>> $app = Prado::getApplication();

>> $db = $app->getModule('data');
Lastly, we want to use the data module to query for a post with ID=1. Notice that we leave out the semicolon to show the results.
>> $db->queryPostByID(1)
There should not be any errors and you should see the following.
PostRecord#1
(
    [ID] => 1
    [AuthorID] => 1
    [AuthorName] => 'Prado User'
    [CreateTime] => 1148819691
    [ModifyTime] => 0
    [Title] => 'Welcome to Prado Weblog'
    [Content] => 'Congratulations! You have successfully installed Prado Blog --
 a PRADO-driven weblog system. A default administrator account has been created.
 Please login with <b>admin/prado</b> and update your password as soon as possible.'
    [Status] => 0
    [CommentCount] => 0
)

Creating Active Record Classes

In the blog demo project, we need to create two Active Record classes, UserRecord and PostRecord, to represent data records in the users and posts tables, respectively. Active Record classes must extend from the base class ActiveRecord, and must define property names that matches with the field names of the corresponding table.

To better organize our directories, we create a new directory protected/database to hold the class files. We also modify our application configuration by inserting the following lines. It is equivalent to adding the directory protected/database to PHP include_path, which allows us to use the classes without explicitly including them.

<paths>
  <using namespace="Application.database.*" />
</paths>

At the prompt, enter the following two commands to create UserRecord and PostRecord classes:

>> generate users Application.database.UserRecord

>> generate posts Application.database.PostRecord

Here we used the namespace format again to specify the classes to be created. The path Application.database.UserRecord indicates that we want the UserRecord class file to be protected/database/UserRecord.php.