Command Line Tool

Note: With Prado version 3.2.3 prado-cli.php location changed from framework to bin directory. If you're using Prado 3.2.2 or earlier, replace bin with framework in examples below.

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

If you type php path/to/bin/prado-cli.php, you should see the following information. Alternatively, if you are not on Windows, you may try to change the prado-cli.php into an executable and execute it as a script

Command line tools for Prado 3.0.5.
usage: php prado-cli.php action <parameter> [optional]
example: php prado-cli.php -c mysite

actions:
  -c <directory>
    Creates a Prado project skeleton for the given <directory>.

  -t <directory>
    Create test fixtures in the given <directory>.

  shell [directory]
    Runs a PHP interactive interpreter. Initializes the Prado
    application in the given [directory].

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

Creating a new Prado project skeleton

To create a Prado project skeleton, do the following:

  1. Change to the directory where you want to create the project skeleton.
  2. Type, php ../prado/bin/prado-cli.php -c helloworld, where helloworld is the directory name that you want to create the project skeleton files.
  3. Type, php ../prado/bin/prado-cli.php -t helloworld to create the test fixtures for the helloworld project.

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 3.0.5.
** Loaded Prado application in directory "demos\blog\protected".
PHP-Shell - Version 0.3.1
(c) 2006, Jan Kneschke <jan@kneschke.de>

>> use '?' to open the inline help

>>
Then we will get an instance of the Prado blog application, and from that instance we want an instance of the 'data' module. Notice that a semicolon at the end of the line suppresses the output.
>> $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.