csv_sourceにfind,paginate対応を追加しました

先日のPHP勉強会の発表で取り上げた、csv Datasourceはcsvが非常に馴染み深いフォーマットなので Datasourceの挙動を理解するのにはとても良い教材だと思います。しかし、findやpaginateには対応していない簡易なものなので発表した勢いで簡単なfindとpaginateの対応を追加してみました。

http://github.com/kaz29/datasources/tree/csv

当初ベタっと(^^; 実装していたのですが、id:hiromi2424 さんのtweetをみて Set::matches を使う方法に変更しました。Set::matchesでサポートしている演算子であれば正常に動作すると思います。

実際のfindは、DBOを扱うときと同様な以下の形式に対応しています。

" => 10,
"status" => 1
);

$conditions = array(
"or" => array(
"id <=" => 10,
"status" => 1
)
);

paginateを実現するために一回のfindですべての行を2回走査します。
あまり大きなcsvファイルを扱う用途には不向きだと思いますが、Datasourceを理解する参考になればうれしいです。

# 時間見つけてテスト書かないとね...。