2005/10/21
S2Dao.php5 demo3
S2Base.PHP5 デモ と PandN が近くなってきたので期待あげ(そして多分最後の demo 版。次回からは sandbox に置きます)
ref - s2dao.demo3.tar.gz
今回は
- s2container.php5 を beta 2に上げてみた。
- s2container.php5 の呼び出しを変えてみた。
- なんちゃってバインディングに対応してみた。
- ディレクトリ構成変えてみた。
- sqlファイルを外に置けるようになった。
ってことで、説明が苦手なのでソースなどを以下。
sql のバインディングと ファイルの外だしは以下のようなものです。
<?php
interface CdDao {
const BEAN = "CdBean";
const Array_getSelectCd_ARGS = "id";
public function List_getSelectCd($id);
}
?>
上のようなインタフェースを書いて、それと同じディレクトリに Daoのクラス名_メソッド名.sql な *.sql ファイルを置いておくと、 そのメソッド名を呼び出した時に sql ファイルを読み込みます。
ファイル構成(demo3)
class/ |-- CdBean.class.php |-- CdDao.class.php |-- CdDao_List_getSelectCd.sql |-- deptDao.dicon `-- testSQL.sql
CdDao_List_getSelectCd.sqlの中身はこんなにシンプル。
SELECT * FROM CD WHERE ID = /*id*/2
deptDao.diconはいつも通り
<components namespace="dao">
<component name="dataSource" class="PearDBDataSource">
<property name="dsn">"mysql://root:pass@localhost/s2con"</property>
</component>
<component class="PearDBSqlHandler"/>
<component name="dbtx" class="PearDBTxInterceptor"/>
<component name="session" class="DBSessionImpl" />
<component class="DaoMetaDataFactoryImpl" />
<component name="interceptor" class="S2DaoInterceptor" />
<component name="beanCdDao" class="CdDao">
<aspect>interceptor</aspect>
</component>
</components>
CdBean.class.phpの中身
<?php
class CdBean {
const TABLE = "CD";
〜長いので省略〜
}
?>
んで、呼び出してみる。
<?php
require_once "s2dao.inc.php";
require_once "class/CdBean.class.php";
require_once "class/CdDao.class.php";
$container = S2ContainerFactory::create("class/deptDao.dicon");
$dao = $container->getComponent("beanCdDao");
var_dump($dao->List_getSelectCd(3));
?>
実行してみる。
string(29) "SELECT * FROM CD WHERE ID = 3"
object(ArrayList)#232 (1) {
["element:private"]=>
object(ArrayObject)#233 (1) {
[0]=>
object(stdClass)#234 (3) {
["ID"]=>
string(1) "3"
["TITLE"]=>
string(18) "あの木何の木"
["CONTENT"]=>
string(5) "J-POP"
}
}
}
また、DBの内容はこんな感じです。
mysql> SELECT * FROM CD; +----+--------------------+---------+ | ID | TITLE | CONTENT | +----+--------------------+---------+ | 1 | HeyJude | Rock | | 2 | Help! | Rock | | 3 | あの木何の木 | J-POP | | 4 | gonna rice | Techno | +----+--------------------+---------+
それにしても、いい加減 s2dao の出力結果変えないと.
Trackback
No Trackbacks
Track from Your Website
http://blog.xole.net/trackback/tb.php?id=330

Comment
No Comments