lmd には、「モジュール」「モジュラー」「モジュールグループ 」という概念があります。
モジュールに関しては、先の章で簡単に触れましたが、ここではより詳しく説明します。
モジュール
例えば、上記【1】【2】のURLに対応するモジュールは、次の構成になります。
/path/to/Lambda/apps/<APP_DIR>/module/
【1】【2】で実行されるモジュールをそれぞれ「module.func1 モジュール」「module.func1.func2 モジュール」と言います。
- 重要 -
モジュールとURLの対応関係
ファイル名のサフィックスである .{logic|prep|view}.php を取り除き、. (ドット) を / (スラッシュ) に置き換えたものが、URLに対応します。
URL
上記URLに対応するモジュール (module.f1.f2.f3 モジュール)
Lambda/apps/<APP_DIR>/module/f1.f2.f3.prep.php
Lambda/apps/<APP_DIR>/module/f1.f2.f3.view.php
<APP_DIR> のディレクトリ名は、好きな名前を付けて運用します。(複数のアプリケーション運用を考慮しています)
設定により、ダミー拡張子を定義することも可能です。
ダミー拡張子「.html」を定義した場合、下記URLにも対応します。
省略時のモジュール (第二階層目の省略)
下記のように、第二階層目を省略したURLには、ファイル名プレフィクスを index とした、index.{logic|prep|view}.php が対応します。
URL
上記URLに対応するモジュール (module.index モジュール)
Lambda/apps/<APP_DIR>/module/index.prep.php
Lambda/apps/<APP_DIR>/module/index.view.php
下記URLでもアクセス可能です。
省略時のモジュール (第一階層目の省略)
下記のように、第一階層目を省略したURLには、index/index.{logic|prep|view}.php が対応します。
URL
上記URLに対応するモジュール (index.index モジュール)
Lambda/apps/<APP_DIR>/index/index.prep.php
Lambda/apps/<APP_DIR>/index/index.view.php
※ index モジュールグループ(後述)は、lmd で予約されています。
モジュール名の命名規約
モジュール名に . (ドット) を含む名前を付けることはできません。また、- (ハイフン) などの“記号”を含めることもできません。
※ PHP の変数名に利用できる文字列 [a-zA-Z0-9_] と覚えておくと良いでしょう。
なお、モジュールには「メインモジュール」と「サブモジュール」という概念もあります。
メインモジュール
【1】のメインモジュールは「module.func1」であり、【2】のメインモジュールは「module.func1.func2」です。
リクエストされた URL に対応する、最初に呼び出されるモジュールがメインモジュールです。
サブモジュール
メインモジュールの中で、さらに別のモジュールを呼び出すことができますが、これをサブモジュールと言います。
※ サブモジュールの中でさらにサブモジュールを呼び出すことも可能です。(モジュールのネスト)
▼具体例
WEBアプリケーションは、ブラウザに対してWEBページのHTMLを返すことが主な仕事になります。
WEBページは大抵の場合、ヘッダー部・コンテンツ部・フッター部の3つのパーツに分離できます。
サイトに統一性を持たせる意味で、ヘッダー部とフッター部はどのページでも共通にするケースがほとんどでしょう。
そこで、lmd のビューでは、下記のようにヘッダー部とフッター部をモジュール化して使いまわす手法が一般的です。
1 2 3 4 5 | <?php $lmd->invokeModule('common.head') ?> : コンテンツ部のHTMLソース : <?php $lmd->invokeModule('common.foot') ?> |
invokeModuleメソッドで呼び出されるモジュールをサブモジュールと言います。
モジュラー
モジュラーは、モジュールを構成する3つのファイルを示します。
具体的には、
- func1.logic.php は「module.func1 のロジックモジュラー」
- func1.prep.php は「module.func1 のプレップモジュラー」
- func2.view.php は「module.func2 のビューモジュラー」
と表現します。
モジュールグループ
【1】および【2】のモジュールグループは module になります。
例えば、ログインが必要な会員専用エリアを実装するとします。
会員専用エリアの URL を http://example.com/member/ 配下と設計し、「member モジュールグループ」を作ります。
こうしておけば、「member モジュールグループ」へのリクエストを lmd がフック(*1)して、ログイン状態によるアクセスの許可/拒否が簡単に実装できるようになります。
※ モジュールグループは常に第一階層目を指すことを覚えておいてください。
(*1) モジュールが実行される前に、app.init.php にて初動動作を定義できます。(後述)
予約済みのモジュールグループ
以下のモジュールグループは lmd で予約されています。
- index モジュールグループ
- 400 モジュールグループ
- 404 モジュールグループ
index モジュールグループ
index モジュールグループは、デフォルトのモジュールグループです。
http://example.com/ のように、モジュールが指定されないリクエストに対応します。
400 モジュールグループ (Bad Request)
不正なリクエストに対応します。
404 モジュールグループ (Not Found)
ページが存在しないリクエストに対応します。