CGIとミックスイン
たとえば,こんなCGIのパラメタがあったとしよう(山田さん20歳をデータベースに登録する)
cmd=add&name=yamada&age=20
こうやってみると,明らかに name と age はひとまとまりのデータである.cmdとは別物であると考えるべきだろう
ところで,このデータをしまうデータベースのフィールドはこんなものだとしよう
id | serial |
name | varchar |
age | int |
company | foreign key company |
やっぱり,name と age が含まれてはいるが,他にもidやらcompanyやら,上のCGIでは指定されていないデータもある.
で,こういうデータ(nameとage)を「ひとまとめにしたいなー」と思っても,何しろCGIの入力というのは単なるキーと値のペアなので,まとまってるも何もあったもんじゃない.
そこで目にとまったのが「ミックスイン」という機能.簡単にいうとあるクラスに他のテンプレートで指定した変数を追加する機能.
http://www.kmonos.net/alang/d/template-mixin.html
特筆すべきは「追加のされかたが一枚岩」であるところだ.普通に
class Foo { Bar b; int x; } class Bar { String s1,s2; }
というようなクラスでは, Fooからs1,s2にアクセスするには一旦 b をはさまないといけない.しかし,
class Foo { mixin Bar; int x; } class Bar { String s1,s2; }
とすれば,なんとFooクラスからs1,s2が直接参照可能になる.
これをまともにサポートしてるのは上で述べたD言語くらいだが,これがあれば,上のCGIのパラメタも,データベースのフィールドも 「 name, age 」というテンプレートにミックスさせてしまえばよい.