2005/10/11
S2Dao.php5 demo2
S2Dao.PHP5 の demo2 を置いてみる。
ref - S2Dao.php5.demo2.tar.gz
今回から Dao から Array_hogehoge() で SELECT 文を自動的に生成して、 ArrayObject 形式で結果を受け取るように。( List_hogehoge()の場合はArrayList(),中身は一緒 ;p)
QUERY アノテーションは動かないので、全文検索です。ハイ。
また、 S2Container.phar は含んでいない、且つ S2Container.PHP5 のバージョンが beta 1 のままです。
前回 update() がありえないことになってたので、それも修正。
demo2 までは PEAR::DB 使っていますが、多分 demo3 までには PDO に。
PandN には間に合わないですね...うーむ。
ちなみに、実行してみた結果(とソース)、詳しくは落としてみてると良いかも。
// s2dao.test.php
<php
require_once "s2container.inc.php";
require_once "class/Cd.class.php";
require_once "class/CdDao.class.php";
$container = S2ContainerFactory::create("class/deptDao.dicon");
$dao = $container->getComponent("beanCdDao");
$array = $dao->Array_getAllCds();
foreach( $array as $value ){
echo "id: " . $value->ID . "\n";
echo "title: " . $value->TITLE . "\n";
echo "content: " . $value->CONTENT . "\n";
echo "-----\n";
}
var_dump($dao->array_all());
// deptDao.dicon
<?xml version="1.0" encoding="utf-8"?>
<!--DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd" -->
<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>
// CdDao.class.php
<?php
interface CdDao {
const BEAN = "Cd";
public function Array_getAllCds();
public function array_all();
}
?>
// Cd.class.php
<?php
class Cd {
const TABLE = "CD";
}
?>
んで、結果
string(42) "SELECT CD.CONTENT, CD.ID, CD.TITLE FROM CD"
id: 2
title: hey
content: world
-----
id: 3
title: you are
content: fine
-----
string(42) "SELECT CD.CONTENT, CD.ID, CD.TITLE FROM CD"
object(ArrayObject)#240 (2) {
[0]=>
object(stdClass)#238 (3) {
["CONTENT"]=>
string(5) "world"
["ID"]=>
string(1) "2"
["TITLE"]=>
string(3) "hey"
}
[1]=>
object(stdClass)#239 (3) {
["CONTENT"]=>
string(4) "fine"
["ID"]=>
string(1) "3"
["TITLE"]=>
string(7) "you are"
}
}
む、実は getter/setter 使わないとだめじゃん...orz
# fetchRowで DB_FETCHMODE_OBJECT とかで取得/return ってしました...
Trackback
No Trackbacks
Track from Your Website
http://blog.xole.net/trackback/tb.php?id=320

Comment
No Comments