2008年11月13日木曜日

(suz-php-jquery) GeryEngineで動的に生成すべきSQLに対応

スズキです。

ついにSQLの条件などを動的に組む必要性に迫られました。

今のDaoの仕組みを拡張する形で実現したいので、
どうしたら、いい感じになるかなー、といろいろ考えていたのですが、
結局、GeryEngineというVelocityクローンの
テンプレートエンジンを用いて、
http://geryengine.instant-publishing.nl/
動的にSQLを組み立てれるようにしました。

ということで、この機能を使うには、
下記ファイル群を追加・更新する必要があります。

▼Dao.php : データベース・アクセス・オブジェクト
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/lib/Dao.php
▼GeryEngine : テンプレート・エンジン
http://code.google.com/p/suz-lab/source/browse/#svn/trunk/suz-php-jquery/php/ext/GeryEngine

使い方はこんな感じです。

--------【PHP】--------
require_once "Dao.php";
class ExampleAction {
public function select() {
$context = array(
"flag" => false
);
$dao = new Dao();
return $dao->selectHogeList(null, 3, 0, $context);
}
}
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/php/app/Action/ExampleAction.php

Daoのメソッドの第4引数にコンテキストを指定すると、
下記のようなselectHogeList.vmからSQLが生成されます。

--------【VM】--------
SELECT *
FROM AREA_MST
#if($flag)
WHERE AREA_ID = 3
#end
--------
http://code.google.com/p/suz-lab/source/browse/trunk/suz-php-jquery/sql/app/example/selectHogeList.vm

ということで、このあとはVelocityの話ということになります。
http://velocity.apache.org/engine/devel/user-guide.html

#(半角)endでブログの文章が切れるぞ!?

--
http://suz-lab.blogspot.com/

0 コメント: