lmd は、LPV で駆動します。
LPV
LPV とは、リクエストに対する一連の処理を
上記の順に実行する処理フローの方式です。
LPV の各ステップでは、対応する php スクリプトが呼ばれ、順に実行されていきます。
LPV: Logic-Prep-View
Logic: ロジック
- ファイルの命名規則: *.logic.php
- 役割:値の抽出と加工
MVC の モデル(Model)に相当し、ビジネスロジックを実行したり、DB の CRUD プロセスを呼び出したりします。
なお、ロジック内では、<HTML>タグの記述を一切禁止します。
<HTML>タグは、後述するビューやプレップに記述してください。
このルールは、ロジックとビュー(デザイン)を完全に分離するための規約です。
※ロジックが不要な場合は、ロジックファイルは無くても構いません。
Prep: プレップ
- ファイルの命名規則: *.prep.php
- 役割:値の整形
後述するビューの前処理をここで行います。プレップは不要な場合が多く、あまり出番がないかもしれません。
使いどころとしては、例えば、「パンくずリスト」を実装する場合などに活躍します。
「パンくずリスト」はリクエストされたURLによって様々に表示内容が変化します。
言い換えれば、実装上は if/else や switch 等の条件分岐を駆使してコーディングされるはずです。
この時、複雑に入り組んだ if/else や switch のプログラムコードをビューに記述したくありません。
(ビューは表示を司るレイヤーなので、表示に関すること以外は実装すべきでないからです)
そこで、前処理としてプレップ内で必要なコードを実装し、実行結果だけをビューに渡すのがスマートなやり方です。
[NOTE]
ビューに渡す値で、どうしてもPHPコードとHTMLタグを混在して記述する必要がある場合は、このレイヤー(プレップ)で実装することが推奨されます。
※プレップが不要な場合は、プレップファイルは無くても構いません。
View: ビュー
- ファイルの命名規則: *.view.php
- 役割:表示
MVC の ビュー(View)と同じ役割です。
ブラウザに出力する HTML やその他のアウトプットを記述します。
※ビューが不要な場合は、ビューファイルは無くても構いません。
なお、lmd ではテンプレートエンジンの利用を推奨しません。
ビュー内での条件分岐や反復処理は、次のように可読性の良い PHP ネイティブ の書き方を推奨します。
条件分岐
1 2 3 4 5 6 7 | <?php if($cond): ?> <?php elseif($cond2): ?> <?php else: ?> <?php endif; ?> |
反復処理
1 2 3 | <?php foreach($arr as $k => $v): ?> <?php endforeach; ?> |
ビューでは、サブモジュール(*1)として、さらにモジュールを呼び出すことができます。
下記は、common.foot モジュールを呼び出している例です。
サブモジュールの呼び出しには $lmd->invokeModuleメソッドを使います。
1 2 3 | <?php $lmd->invokeModule('common.foot'); ?> |
(*1) モジュールの中で呼び出されるモジュール
モジュール
*.logic.php
*.prep.php
*.view.php
lmd では、logic/prep/view を1グループにまとめ、ひとつの実行単位として「モジュール」と呼びます。
なお、モジュールは、logic/prep/view の3つが必ずしも必要ではありません。
どれか1つあれば成立します。
しかし1つもない状態で呼び出すとエラーになります。