DAOとVO
今までDAOクラスからオブジェクトに変数を代入して返していたけど、これって無駄だよなぁ。
テンプレートからオブジェクトを参照するならまだマシだが、テンプレートではオブジェクトを扱いたくない。配列にしたい。
PDOStatement::fetch を配列で受け取ったらテーブルのカラム名がそのまま変数になる。
ループで回す時は、queryの戻り値をそのままアクションの変数にしてしまえばいいんじゃないだろうか。
PHPのマニュアルにあるコード
<?php function getFruit($conn) { $sql = 'SELECT name, colour, calories FROM fruit ORDER BY name'; foreach ($conn->query($sql) as $row) { print $row['NAME'] . "\t"; print $row['COLOUR'] . "\t"; print $row['CALORIES'] . "\n"; } } ?>
これが、コンパイル済みテンプレートのforeachが呼ばれたときに実行されるようにすれば、無駄なループと代入がなくなる。
っていうのは既に他の人達は普通にやっていることなのかなぁ。。
PHP5用に書き直すか、どちらでも使えるようにするか・・うーん。
DBから受け取ったデータを変換することが多いかどうかで分かれるのか。
基本的な変換はFlexyがやってくれるし、あとは文字を繋げたり加工したり・・。
そういう場合はDAOクラスを作ってイテレータで処理するように、と・・うーん。