ログ日記

作業ログと日記とメモ

リファクタリング

二日前に

なので取り敢えず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を設定するだけ。



こういうことしてるとなかなかページ制作が進まないんだけど、ちゃんとやっておくと今後の作業効率がだいぶ上がる。