すっかり春めきましたが、いかがお過ごしでしょうか。
とりあえずMVCに基づいて、ページ表示用のコントローラとモデルとビュー用にソースを書いている最中。
コントローラのお仕事はこんな感じ
- URLから表示するファイル名を受け取って、モデルに対して該当するXMLファイル内のページデータをシリアライズし、配列で返すように指示。
- モデルから受け取ったページデータをビューに投げる。
モデルのお仕事はこんな感じ
コントローラから受け取ったファイル名をハッシュして、実際に読み込むXMLファイル名に変換する(つまりストレージとして利用するファイルの名前はURLの最後のカラムの文字列とは異なる。これは悪意のあるリクエストを無効化するため)。
実際のファイル名からXMLファイルを読み込み、シリアライズして扱いやすい形の配列に納めてコントローラに返す。
開発段階ではシリアライズ処理に(デシリアライズの必要性も考慮して) Keith Devens .com の「PHP XML Library」を使用しているが、書き込み時にCDATAを上手く扱えなかったりエラーログに若干のwarningを吐いているので、一部修正している。万が一このCMSを配布するようになったらこのライブラリ用のパッチを公開するか、Artistic Licenseに基づいて再配布を行うか、自分でこれと同じインタフェースを持つコードを書くかしないとならないかも。とりあえず時期が来たら考える。
ビューの仕事はこんな感じ
- テンプレートを読み込み、コントローラから渡された配列内のページデータを使って、テンプレート中のリソースを書き換えていく。
- 最後にHTTPヘッダを付けて出力。
開発そのものは初めてなので、作法がわからない部分(例えば戻り値は必要かとか、複数の値を戻したい場合はどうするのかとか、設定ファイルみたいな物で挙動を変えるにはどうしたらいいとか)もあるが、とりあえずURLを打ち込んで、XMLから読み出したページデータを読み込むところまでは辿り着いた、ふぅ( ̄△ ̄;。
ある程度実装ができあがってきたので、はやいところバージョン管理システムを導入したい。数日前にMac OS X 10.5に更新した(ため、開発環境はMAMPに移行)が、subversionが入っているのは確認した。使い方覚えないとなぁー。