mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-04 07:14:06 +01:00
157 lines
7.6 KiB
Plaintext
157 lines
7.6 KiB
Plaintext
モジュール
|
||
======
|
||
|
||
> Note|注意: モジュールは version 1.0.3 以降でサポートされました。
|
||
|
||
モジュールは、[モデル](/doc/guide/basics.model)、
|
||
[ビュー](/doc/guide/basics.view)、[コントローラ](/doc/guide/basics.controller)
|
||
とその他のサポートしているコンポーネントから構成される自己完結した
|
||
ソフトウェアユニットです。
|
||
多くの面でモジュールは、 [アプリケーション](/doc/guide/basics.application)
|
||
に似ています。主な違いは、モジュールは単独では配置せず、アプリケーションの内部に
|
||
存在しなければならないという点です。
|
||
ユーザーは、通常のアプリケーションコントローラでするように、
|
||
そのコントローラにアクセスすることができます。
|
||
|
||
モジュールはいくつかのシナリオで役立ちます。
|
||
大規模アプリケーションでは、それをいくつかのモジュールに分け、
|
||
各々独立して開発と保守されるかもしれません。
|
||
ユーザー管理やコメント管理のような一般的に用いられる機能を、
|
||
将来のプロジェクトで簡単に再利用できるように、
|
||
モジュールで開発されるかもしれません。
|
||
|
||
モジュールの作成
|
||
---------------
|
||
|
||
モジュールはユニークな [ID|CWebModule::id] となる名前のディレクトリ下に
|
||
まとめられます。モジュールのディレクトリ構成は、
|
||
[アプリケーションベースディレクトリ](/doc/guide/basics.application#アプリケーションベースディレクトリ)
|
||
と似ています。
|
||
以下に、 `forum` という名前のモジュールのディレクトリ構成を示します:
|
||
|
||
~~~
|
||
forum/
|
||
ForumModule.php モジュールクラスファイル
|
||
components/ 再利用可能なユーザコンポーネントを含む
|
||
views/ ウイジェットのためのビューを含む
|
||
controllers/ コントローラクラスファイルを含む
|
||
DefaultController.php デフォルトコントローラクラスファイル
|
||
extensions/ サードパーティエクステンションを含む
|
||
models/ モデルクラスファイルを含む
|
||
views/ コントローラビューとレイアウトファイルを含む
|
||
layouts/ レイアウトビューファイルを含む
|
||
default/ デフォルトコントローラのためビューファイルを含む
|
||
index.php インデックスビューファイル
|
||
~~~
|
||
|
||
モジュールは [CWebModule] より継承されたモジュールクラスを持つ必要があります。
|
||
クラス名は `$id` にモジュールID(もしくは、モジュールディレクトリ名)を入れ、
|
||
`ucfirst($id).'Module'` という形式を用いて決定します。
|
||
モジュールクラスは、モジュールコード間で共通して使用される情報を格納する
|
||
中心部分となります。
|
||
たとえば、モジュールパラメータを格納するために [CWebModule::params] を、
|
||
モジュールレベルで
|
||
[アプリケーションコンポーネント](/doc/guide/basics.application#アプリケーションコンポーネント)
|
||
を共有するために [CWebModule::components] を使用できます。
|
||
|
||
> Tip|ヒント: 新しいモジュールの基本的なスケルトンを作成するために `yiic`
|
||
ツールを使用することができます。たとえば、上記した `forum` モジュールを
|
||
作るには、コマンドラインウィンドウで下記コマンドを実行します。
|
||
>
|
||
> ~~~
|
||
> % cd WebRoot/testdrive
|
||
> % protected/yiic shell
|
||
> Yii Interactive Tool v1.0
|
||
> Please type 'help' for help. Type 'exit' to quit.
|
||
> >> module forum
|
||
> ~~~
|
||
|
||
|
||
モジュールの使用
|
||
------------
|
||
|
||
モジュールを使用するには、まず
|
||
[アプリケーションベースディレクトリ](/doc/guide/basics.application#アプリケーションベースディレクトリ)
|
||
の `modules` ディレクトリの下にそのモジュールディレクトリを配置します。
|
||
次に、アプリケーションの [modules|CWebApplication::modules] プロパティで、
|
||
モジュール ID を宣言します。
|
||
たとえば、上記 `forum` モジュールを使用するために、
|
||
[アプリケーション初期構成](/doc/guide/basics.application#アプリケーション初期構成)
|
||
で下記のようにします。
|
||
|
||
~~~
|
||
[php]
|
||
return array(
|
||
......
|
||
'modules'=>array('forum',...),
|
||
......
|
||
);
|
||
~~~
|
||
|
||
モジュールは初期プロパティ値で設定することも可能です。
|
||
使用方法は、
|
||
[アプリケーションコンポーネント](/doc/guide/basics.application#アプリケーションコンポーネント)
|
||
の設定と非常に似ています。
|
||
たとえば、`forum` モジュールがそのモジュールクラス中に `postPerPage`
|
||
という名前のプロパティを持っていれば、下記のように
|
||
[アプリケーション初期構成](/doc/guide/basics.application#アプリケーション初期構成)
|
||
の中で設定できます。
|
||
|
||
~~~
|
||
[php]
|
||
return array(
|
||
......
|
||
'modules'=>array(
|
||
'forum'=>array(
|
||
'postPerPage'=>20,
|
||
),
|
||
),
|
||
......
|
||
);
|
||
~~~
|
||
|
||
モジュールのインスタンスは現在のアクティブなコントローラ中の
|
||
[module|CController::module] プロパティによってアクセスできます。
|
||
モジュールインスタンスを通じて、モジュールレベルで共有されている情報に
|
||
アクセスすることができます
|
||
たとえば、上記の `postPerPage` 情報にアクセスするために、
|
||
下記の表現を使用できます:
|
||
|
||
~~~
|
||
[php]
|
||
$postPerPage=Yii::app()->controller->module->postPerPage;
|
||
// もしくは、もし $this がコントローラインスタンスを参照するなら下記のように
|
||
// $postPerPage=$this->module->postPerPage;
|
||
~~~
|
||
|
||
モジュールでのコントローラアクションは
|
||
[ルート(道筋)](/doc/guide/basics.controller#ルート(道筋))
|
||
`moduleID/controllerID/actionID` を使用してアクセスできます。
|
||
たとえば、上記の `forum` モジュールが `PostController` という名前の
|
||
コントローラを持っていれば、このコントローラの `create` アクションを
|
||
参照するために、
|
||
[ルート(道筋)](/doc/guide/basics.controller#ルート(道筋))
|
||
`forum/post/create` を使用できます。
|
||
このルートに対応する URL は
|
||
`http://www.example.com/index.php?r=forum/post/create` になります。
|
||
|
||
> Tip|ヒント: コントローラが `controllers` のサブディレクトリにあるなら、
|
||
上記の [ルート(道筋)](/doc/guide/basics.controller#ルート(道筋))
|
||
フォーマットをまだ使用できます。
|
||
たとえば、`PostController` が `forum/controllers/admin` 下にある場合、
|
||
`forum/admin/post/create` を使用している `create` アクションを参照できます。
|
||
|
||
モジュールのネスト化
|
||
-------------
|
||
|
||
モジュールはネスト化することができます。
|
||
これは、モジュールが他のモジュールを含むことができるということです。
|
||
前者の *親モジュール* を呼び出した上に、後者の *子モジュール* を
|
||
呼び出します。子モジュールは親モジュールの `modules` ディレクトリ下に
|
||
配置されなければなりません。
|
||
子モジュールでコントローラアクションにアクセスするために、
|
||
ルート `parentModuleID/childModuleID/controllerID/actionID` を
|
||
使用しなければなりません。
|
||
|
||
<div class="revision">$Id: basics.module.txt 745 2009-02-25 21:45:42Z qiang.xue $</div>
|