ちょっとPHPから離れていたので、リハビリも兼ねてLoungeを改造してみようと思い立った今日この頃です。


機能で追加しようと考えてるもの
  • ブラウザのリロードを行った際に、再投稿が行われないようにする
  • 若干のセキュリティ対策
  • エラー発生時、エラー画面に遷移させる

実装面において思いついたこと
  • すべてPHP5を前提とした設計とし、ソースも完全に書き直す
  • MVCモデルを意識した設計とする
<View>
  • 画面出力にはSmartyを採用する
  • エラー画面に出力されるエラー名、メッセージはView側で設定できるようにする
  • 画面表示されるログのレコード数は、View側で設定する(保存されるレコード数はモデル側で設定)
  • リロード対策として、POSTメソッドで渡される項目に'id'フィールドを追加する(TYPE属性はhiddenとし、値はPHPで一意の値を生成する)
<Model>
  • 例外処理のため、LoungeExceptionを作る
  • LoungeExceptionでは、__toStringメソッドをオーバーライドする
  • __toStringの戻り値はエラー発生原因に応じた一意のエラー名称とし、View側がエラー画面出力のハンドリングに利用する
  • Model部分に関する設定は設定ファイルで行う(画面出力に関する設定はSmartyのconfigファイルで行う)
  • 設定ファイルの読み込みにはPEAR::Configライブラリを利用する
  • ログは従来通りファイルで保存する
  • ログの保存項目に、'id'フィールドを追加する(投稿されたIDがログに存在する場合は二重投稿と判断)
<Controller>
  • ここは特記することはないかな?

 うーん、今思いついたのはこんなところですかねぇ。特に画面表示に関する部分は、PHPプログラマでなくとも、自由にデザインできるようにしたいと思っています。と言っても、Smartyの組み込み関数やconfigファイルも使用するので、Smartyのテンプレート記述に関する知識は必要になります。つくりにもよりますが、SmartyってHTMLやCSSだけわかればOKと言うわけでもないんですよねぇ。一意のIDを発行する部分だけは、PHPスクリプトを記述しないとダメですし。
 とりあえず、これで様子を見て、もうちょっと複雑な掲示板でも作ってみようかと思います。まぁ、飽きなければですがね。:D