2005/10/11

S2Dao.php5 demo2

ポスト @ 0:11:39 , 修正 @ 2005/10/11 0:38:39 | ,     このエントリーを含むはてなブックマーク

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

Post Your Comment


*は入力必須です。E-Mailは公開されません。

1 + 2 =