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を理解する参考になればうれしいです。
# 時間見つけてテスト書かないとね...。