lmd のサンプルコード

lmd で開発を行う際、実際にどんなコードになるのか、以下のサンプルコードで雰囲気をつかんでください。
例えば、次のURLがリクエストされた場合のロジックとビューのサンプルコードなります。

A) http://example.com/hoge?userid=123&name=fuga&age=25
B) http://example.com/hoge-userid-123/name-fuga/age-25/

※ 設定によりますが、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/