mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-12 11:06:54 +01:00
96 lines
3.8 KiB
Plaintext
96 lines
3.8 KiB
Plaintext
Console Applications
|
|
====================
|
|
|
|
Console applications are mainly used by a Web application to perform
|
|
offline work, such as code generation, search index compiling, email
|
|
sending, etc. Yii provides a framework for writing console applications in
|
|
an object-oriented and systematic way.
|
|
|
|
Yii represents each console task in terms of a [command|CConsoleCommand],
|
|
and a [console application|CConsoleApplication] instance is used to
|
|
dispatch a command line request to an appropriate command. The application
|
|
instance is created in an entry script. To execute a console task, we
|
|
simply run the corresponding command on the command line as follows,
|
|
|
|
~~~
|
|
php entryScript.php CommandName Param0 Param1 ...
|
|
~~~
|
|
|
|
where `CommandName` refers to the command name which is case-insensitive,
|
|
and `Param0`, `Param1` and so on are parameters to be passed to the command
|
|
instance.
|
|
|
|
The entry script for a console application is usually written like the
|
|
following, similar to that in a Web application,
|
|
|
|
~~~
|
|
[php]
|
|
defined('YII_DEBUG') or define('YII_DEBUG',true);
|
|
// include Yii bootstrap file
|
|
require_once('path/to/yii/framework/yii.php');
|
|
// create application instance and run
|
|
$configFile='path/to/config/file.php';
|
|
Yii::createConsoleApplication($configFile)->run();
|
|
~~~
|
|
|
|
We then create command classes which should extend from [CConsoleCommand].
|
|
Each command class should be named as its command name appended with
|
|
`Command`. For example, to define an `email` command, we should write an
|
|
`EmailCommand` class. All command class files should be placed under the
|
|
`commands` subdirectory of the [application base
|
|
directory](/doc/guide/basics.application#application-base-directory).
|
|
|
|
> Tip: By configuring [CConsoleApplication::commandMap], one can also have
|
|
command classes in different naming conventions and located in different
|
|
directories.
|
|
|
|
Writing a command class mainly involves implementing the
|
|
[CConsoleCommand::run] method. Command line parameters are passed as an
|
|
array to this method. Below is an example:
|
|
|
|
~~~
|
|
[php]
|
|
class EmailCommand extends CConsoleCommand
|
|
{
|
|
public function run($args)
|
|
{
|
|
$receiver=$args[0];
|
|
// send email to $receiver
|
|
}
|
|
}
|
|
~~~
|
|
|
|
At any time in a command, we can access the console application instance
|
|
via `Yii::app()`. Like a Web application instance, console application can
|
|
also be configured. For example, we can configure a `db` application
|
|
component to access the database. The configuration is usually specified as
|
|
a PHP file and passed to the constructor of the console application class
|
|
(or [createConsoleApplication|YiiBase::createConsoleApplication] in the
|
|
entry script).
|
|
|
|
Using the `yiic` Tool
|
|
---------------------
|
|
|
|
We have used the `yiic` tool to [create our first
|
|
application](/doc/guide/quickstart.first-app). The `yiic` tool is in fact
|
|
implemented as a console application whose entry script file is
|
|
`framework/yiic.php`. Using `yiic`, we can accomplish tasks such as
|
|
creating a Web application skeleton, generating a controller class or model
|
|
class, generating code needed by CRUD operations, extracting messages to be
|
|
translated, etc.
|
|
|
|
We can enhance `yiic` by adding our own customized commands. To do so, we
|
|
should start with a skeleton application created using `yiic webapp`
|
|
command, as described in [Creating First Yii
|
|
Application](/doc/guide/quickstart.first-app). The `yiic webapp` command
|
|
will generate two files under the `protected` directory: `yiic` and
|
|
`yiic.bat`. They are the *local* version of the `yiic` tool created
|
|
specifically for the Web application.
|
|
|
|
We can then create our own commands under the `protected/commands`
|
|
directory. Running the local `yiic` tool, we will see that our own commands
|
|
appearing together with the standard ones. We can also create our own
|
|
commands to be used when `yiic shell` is used. To do so, just drop our
|
|
command class files under the `protected/commands/shell` directory.
|
|
|
|
<div class="revision">$Id$</div> |