ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

ACLキャッシュの初期実装、終了。あとDAO系をsingletonに統一した。

諸事情で最近symfonyを勉強しています。で、そこで使われているPropelというO/RMapperでは、レコードのEntityを操作するクラスと、CRUD操作を担当するクラスとをきっちり分けています。Entityのクラスは基本的にインスタンス化された状態で使用します。一方、CRUD操作担当は"XxxxPeer"という名前になっていて、基本的にstaticメソッドで操作します。

これに触発されて、DAO系をsingletonに統一しました。さすがに全部staticに書き直すまでの気力はないです。
YakiBikiのDAOでは手抜きして、Entityは連想配列で済ませています。なので、DAO系はいわばPropelの"XxxxPeer"クラスにそのまま当てはまってしまいます。というわけで、singletonにしました。ハイ。
というか、特にyb_dao_Userはかなりnewしていたところがあったためか、singleton()に直してみると、なんだか動作が若干ですが軽くなった感じ。

あと、ようやくACLキャッシュ(yb_AclCache)の初期実装が終わりました。User, Group, Aclの各Daoでも、create/update/deleteなどレコードの操作が絡んでくる箇所にはyb_AclCache::call()を埋め込んであります。(Userについてはdeleteのみ。)

さて。ようやく山を一つ越せた感じです。次の大きな山は検索機能。あとHTML、Wiki機能が待ちかまえています・・・!!
が、その前に

  • Thread管理の実装
  • コンテンツ作成・編集部分でThreadやACLの表示や更新処理などで、indexなどの本格的な実装に入る。

が残っていました。
ちょっとですね、コンテンツ作成・変更でのスレッドとかACLの処理については仮組で作った部分が多かったので。その辺り、ちょっと本番用に実装しちゃいます。ようやくACLも整ってきたので。