mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-21 15:36:53 +01:00
83 lines
5.4 KiB
Plaintext
83 lines
5.4 KiB
Plaintext
コンソールアプリケーション
|
|
====================
|
|
|
|
コンソールアプリケーションは主にウェブアプリケーションで使用されます。
|
|
例えばオフラインの作業、例えばコード生成、サーチインデックス編集、メール送信等々です。
|
|
Yiiはオブジェクト指向でシステム的にコンソールアプリケーションを書くためのフレームワークを提供しています。
|
|
|
|
Yiiは[コマンド|CConsoleCommand]に関して、それぞれのコンソールタスクを意味します。
|
|
そして、[コンソールアプリケーション|CConsoleApplication]インスタンスは
|
|
コマンドライン要求を適切なコマンドに送るのに用いられます。
|
|
アプリケーションインスタンスはエントリスクリプトで作られます。
|
|
コンソールタスクを実行するには、以下のようにコマンドラインからコマンドを実行します。
|
|
|
|
~~~
|
|
php entryScript.php CommandName Param0 Param1 ...
|
|
~~~
|
|
|
|
ここで`CommandName`はケースセンシティブなコマンド名で、`Param0`、`Param1`等はコマンドインスタンスに
|
|
渡されるパラメータです。
|
|
|
|
コンソールアプリケーションのためのエントリスクリプトは通常以下のように書かれます。これは
|
|
ウェブアプリケーションの場合と似ています。
|
|
|
|
~~~
|
|
[php]
|
|
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`クラスを書くことになります。
|
|
全てのコマンドクラスファイルは、[アプリケーションベースディレクトリ](/doc/guide/basics.application#application-base-directory)の下の`commands`サブディレクトリの下に置かれます。
|
|
|
|
> Tip|ヒント: [CConsoleApplication::commandMap]を構成することにより、
|
|
コマンドクラスを異なる命名ルールで名付けることができ、また異なるディレクトリに配置することができます。
|
|
|
|
コマンドクラスを記述することは、主に[CConsoleCommand::run]メソッドを実装することが必要です。
|
|
コマンドラインパラメータはこのメソッドへの配列として渡されます。以下に一例を示します。
|
|
|
|
~~~
|
|
[php]
|
|
class EmailCommand extends CConsoleCommand
|
|
{
|
|
public function run($args)
|
|
{
|
|
$receiver=$args[0];
|
|
// 電子メールを$receiverに送信
|
|
}
|
|
}
|
|
~~~
|
|
|
|
コマンド実行中いつでも、コンソールアプリケーションインスタンスに、`Yii::app()`によりアクセスすることが可能です。
|
|
ウェブアプリケーションの様に、コンソールアプリケーションも構成可能です。
|
|
例えば、データベースにアクセスするため、`db`アプリケーションコンポーネントを構成することが可能です。
|
|
通常、構成ファイルはPHPファイルとして定義され、コンソールアプリケーションクラスのコンストラクタに渡されるか、
|
|
またはエントリスクリプト中において、[createConsoleApplication|YiiBase::createConsoleApplication]により構成されます。
|
|
|
|
`yiic`ツールの使用
|
|
---------------------
|
|
|
|
[最初のアプリケーションを作成する](/doc/guide/quickstart.first-app)ために`yiic`ツールを使ってきました。
|
|
実際、`yiic`ツールはコンソールアプリケーションとして実装され、そのエントリスクリプトファイルは`framework/yiic.php`です。
|
|
`yiic`を使うことで、ウェブアプリケーションの骨格自動生成、コントローラクラスやモデルクラスの自動生成、
|
|
CRUD操作に必要なコードの自動生成、翻訳するメッセージの抽出等が可能です。
|
|
|
|
カスタムコマンドを追加することで`yiic`の拡張が可能です。
|
|
そうするためには、[最初のアプリケーションを作成する](/doc/guide/quickstart.first-app)で説明されているように、
|
|
`yiic webapp`により生成された骨格アプリケーションから始めなければなりません。
|
|
`yiic webapp`コマンドは`yiic`と`yiic.bat`という2つのファイルを`protected`ディレクトリの下に作成します。
|
|
これらは`yiic`ツールのローカルバージョンであり、特別にそのウェブ アプリケーションのために作成されたものです。
|
|
|
|
自分のコマンドを`protected/commands`の下に作成することができます。
|
|
ローカルの`yiic`ツールを実行することにより、自分自身のコマンドが標準のコマンドと共に実行するのが確認できます。
|
|
自分のコマンドはさらに、`yiic shell`が実行されたときに使用されるようにすることもできます。そうするためには
|
|
自分のコマンドクラスファイルを`protected/commands/shell`の下に置くだけです。
|
|
|
|
<div class="revision">$Id: topics.console.txt 745 2009-02-25 21:45:42Z qiang.xue $</div>
|