リファクタリング
二日前に
なので取り敢えずgetColumnMeta()して型情報を設定するようにしてみた。
と書いたのに全部直せてなかった。三カ所に処理が分散していたのだ。
なので、ひとつにまとめようとリファクタリング。微妙に1,2行違っていたりしてちょっとめんどくさかった。
ついでにイテレータもリファクタリング。
これでかなりシンプルになった。
イテレータの使い方。
<?php // コンポーネントクラス require_once 'webapp/components/Laiz/OrMapperIterator.php'; // 抽象クラスの読み込み class SomeIterator extends Laiz_OrMapperIterator { public function __construct(DaoFactory $factory){ // タイプヒンティングインジェクション $this->setDao($factory->get('some_db_table_name')); // テーブルごとのDaoを設定 $this->setOptions(array('order' => 'num', // 条件を設定 'where' => array('id' => array('between', 1, 10)))); } }
<?php // アクションクラス class SomeAction { public $list; public function execute(SomeIterator $ite){ // タイプヒンティングインジェクション $this->list = $ite; // ビューへ渡す } }
<table> <!-- 改造Flexy用(foreachの簡易版) --> {loop:list} <tr> <td>{id}</td> <td>{num}</td> ... </tr> {endloop:} </table>
一度イテレータを作ってしまえば、DB情報の一覧がかなり楽。
そのイテレータクラスを作る一度の作業も、そのまま表示するだけならコンストラクタでdaoというかormを設定するだけ。
こういうことしてるとなかなかページ制作が進まないんだけど、ちゃんとやっておくと今後の作業効率がだいぶ上がる。