lmd で開発を行う際、実際にどんなコードになるのか、以下のサンプルコードで雰囲気をつかんでください。
例えば、次のURLがリクエストされた場合のロジックとビューのサンプルコードなります。
※ 設定によりますが、lmd では、A と B を同一のリクエストとみなします。
hoge/index.logic.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php // GETパラメーターの取得 $userid = $lmd->httpGet('userid'); $name = $lmd->httpGet('name'); $age = $lmd->httpGet('age'); /* モジュールによっては、 DB(DAO)ライブラリをインスタンス化してデータを取得したり、 $dao = Factory::load('DB/DAO_test_table')->getInstance(); $res = $dao->fetchAll($offset, $limit); $total_rows = $dao->foundRows(); : アップロードライブラリをインスタンス化してファイルアップロードを行ったり、 $upload = Factory::load('Upload')->getInstance($params); $upload->setUploadDir(UPL_DIR); $result = $upload->execute(); if ($result) { // 成功時の処理 } : : 様々な処理を行います。 */ // レスポンスをアサイン $lmd->setResponse(array( 'userid' => $userid, 'name' => "<em>{$name}</em>", // <em>タグで囲んでみる(※1) 'age' => $age, )); |
lmd のロジック(hoge/index.logic.php)では、上記のように $lmd->httpGet メソッドでリクエストパラメーターを取得して、$lmd->setResponse メソッド で、ビュー(hoge/index.view.php)に渡すレスポンスをアサインします。
$lmd は、予約されたインスタンス変数であり、lmd の動作に必要な様々な機能を提供します。
グローバル空間に定義されているため、基本的にどこからでも呼び出せます。
(※1) サンプルのため、<HTML>タグを記述しています。本来、ロジック内に<HTML>タグを記述することは禁止されています。
hoge/index.view.php
1 2 3 4 5 6 7 | <html> <body> <p>ユーザーID:<?php echo $userid ?></p> <p>名前:<?php echo $name ?></p> <p>年齢:<?php echo $age ?></p> </body> </html> |
ビューでは、$lmd->setResponseメソッドでセットした配列のキーを変数として利用できます。
$lmd->setResponseメソッドは、デフォルトで値を自動的にサニタイズ(htmlspecialchars)します。
デモ:上記のコードで動作しているサンプルです。
http://lmd.root-n.com/demo/sample1?userid=123&name=fuga&age=25
http://lmd.root-n.com/demo/sample1-userid-123/name-fuga/age-25/
Lambda::INSANITATION
値を自動的にサニタイズ(htmlspecialchars)したくない場合は、$lmd->setResponseメソッドの第二引数に「Lambda::INSANITATION」を指定します。
1 2 3 4 5 6 7 8 9 | // レスポンスをアサイン $lmd->setResponse(array( 'userid' => $userid, 'age' => $age, )); $lmd->setResponse(array( 'name' => "<em>{$name}</em>", // <em>タグで囲んでみる ), Lambda::INSANITATION); |
デモ:上記のコードで動作しているサンプルです。
http://lmd.root-n.com/demo/sample2?userid=123&name=fuga&age=25
http://lmd.root-n.com/demo/sample2-userid-123/name-fuga/age-25/