昨日開催されたPHP勉強会@東京で使った資料です。
http://kunit.jp/docs/PHPTokyo7.pdf
このPDFで説明しているように、現在Wikiで公開しているActiveGateway alpha1では「find_all」というようにRoRのActiveRecord同様メソッド名が「_」つなぎになっているのを、次のリリースから「findAll」というようにcamelCaseにします。
次のリリースでは以下のものに対応しようと思っています。(ActiveRecordの機能を随時もりこむ+αという感じです)
- tableInfoで取得しているフィールド情報をキャッシュできるようにする
- クエリの結果をキャッシュできるようにする
- SQL文およびブレースフォルダに対する値をログに落とすようにする(デバッグを容易にするため。もちろんレベルわけして出る量を調整できるようにします)
- destroyやdeleteを実行したときに「dependent => true」と定義されている関連テーブルがあった場合、連鎖して削除するようにする
- create_at/create_on/update_at/update_onというフィールドを準備しておいたら、自動的に新規作成時間、更新時間がはいるようにする
- eachメソッドでの取得で全件まとめて取得だけではなくて、指定した件数だけ先読みしておくようなことを可能とする
- データ保持用のクラスを別途準備すればstdClassの代わりに使えるようにする。(そこにロジックを書くことができるようになる。そうするとActiveRecordパターンになる)
- update/deleteメソッドの前後にフックポイントを準備する
- delete_at/delete_onというフィールドがある場合、deleteメソッドを発行しても論理削除しかしないようにする(つまり削除日時を登録するだけ)。論理削除が成り立つために、delete_at/delete_onがある場合はfind系メソッドも「delete_at is null」というような条件を自動的につけるようにする。
- テーブルの関連付けで「inner_join => true」としておけば、INNER JOINしたものを発行するようにする(alpha1は別々にSQL文が発行される)
他にもこういうのがあるとなーというのがあればツッコミよろしくお願いします。