コンソールアプリケーションは主にウェブアプリケーションで使用されます。 例えばオフラインの作業、例えばコード生成、サーチインデックス編集、メール送信等々です。 Yiiはオブジェクト指向でシステム的にコンソールアプリケーションを書くためのフレームワークを提供しています。
Yiiはコマンドに関して、それぞれのコンソールタスクを意味します。 そして、コンソールアプリケーションインスタンスは コマンドライン要求を適切なコマンドに送るのに用いられます。 アプリケーションインスタンスはエントリスクリプトで作られます。 コンソールタスクを実行するには、以下のようにコマンドラインからコマンドを実行します。
php entryScript.php CommandName Param0 Param1 ...
ここでCommandName
はケースセンシティブなコマンド名で、Param0
、Param1
等はコマンドインスタンスに
渡されるパラメータです。
コンソールアプリケーションのためのエントリスクリプトは通常以下のように書かれます。これは ウェブアプリケーションの場合と似ています。
defined('YII_DEBUG') or define('YII_DEBUG',true);
// Yiiブートストラップファイルを読み込む
require_once('path/to/yii/framework/yii.php');
// アプリケーションインスタンスを生成して実行
$configFile='path/to/config/file.php';
Yii::createConsoleApplication($configFile)->run();
次に、CConsoleCommandから継承されるコマンドクラスを生成します。
それぞれのコマンドクラスは名前の最後にCommand
が付くように名付けられるべきです。
例えば、email
コマンドを定義する場合は、EmailCommand
クラスを書くことになります。
全てのコマンドクラスファイルは、アプリケーションベースディレクトリの下のcommands
サブディレクトリの下に置かれます。
ヒント: CConsoleApplication::commandMapを構成することにより、 コマンドクラスを異なる命名ルールで名付けることができ、また異なるディレクトリに配置することができます。
コマンドクラスを記述することは、主にCConsoleCommand::runメソッドを実装することが必要です。 コマンドラインパラメータはこのメソッドへの配列として渡されます。以下に一例を示します。
class EmailCommand extends CConsoleCommand
{
public function run($args)
{
$receiver=$args[0];
// 電子メールを$receiverに送信
}
}
コマンド実行中いつでも、コンソールアプリケーションインスタンスに、Yii::app()
によりアクセスすることが可能です。
ウェブアプリケーションの様に、コンソールアプリケーションも構成可能です。
例えば、データベースにアクセスするため、db
アプリケーションコンポーネントを構成することが可能です。
通常、構成ファイルはPHPファイルとして定義され、コンソールアプリケーションクラスのコンストラクタに渡されるか、
またはエントリスクリプト中において、createConsoleApplicationにより構成されます。
yiic
ツールの使用 ¶最初のアプリケーションを作成するためにyiic
ツールを使ってきました。
実際、yiic
ツールはコンソールアプリケーションとして実装され、そのエントリスクリプトファイルはframework/yiic.php
です。
yiic
を使うことで、ウェブアプリケーションの骨格自動生成、コントローラクラスやモデルクラスの自動生成、
CRUD操作に必要なコードの自動生成、翻訳するメッセージの抽出等が可能です。
カスタムコマンドを追加することでyiic
の拡張が可能です。
そうするためには、最初のアプリケーションを作成するで説明されているように、
yiic webapp
により生成された骨格アプリケーションから始めなければなりません。
yiic webapp
コマンドはyiic
とyiic.bat
という2つのファイルをprotected
ディレクトリの下に作成します。
これらはyiic
ツールのローカルバージョンであり、特別にそのウェブ アプリケーションのために作成されたものです。
自分のコマンドをprotected/commands
の下に作成することができます。
ローカルのyiic
ツールを実行することにより、自分自身のコマンドが標準のコマンドと共に実行するのが確認できます。
自分のコマンドはさらに、yiic shell
が実行されたときに使用されるようにすることもできます。そうするためには
自分のコマンドクラスファイルをprotected/commands/shell
の下に置くだけです。
Signup or Login in order to comment.