Because We Love Happy Coding

フリーライターからエンジニア × 講師。発信力だけあり余ってる感じ

個人プロジェクト「prj_LvUp」のViewまわりでやりたいこと

今日もまたコーディング。だって僕らはHappy Codingが大好きだから。

生意気にもMVCもどきを考えているので、Viewの仕組みを考える必要がある。

Viewのしくみ

やりたいこと。

  1. phpでテンプレートファイルを作る。
  2. テンプレートファイルを読み込む
  3. 読み込んだテンプレートに、選択言語に応じて定型文を埋め込む。
  4. テンプレートの変数に、必要な情報を埋め込む。
  5. ブラウザの画面に出力する。

いろんな考え方はあると思うけれど、今回私が選択したのは以下の通り。

  1. routerの役割をするものがないので、phpファイルに直接アクセスさせる。
  2. ob_startで出力バッファを稼働。require_once()してテンプレートファイルを読み込み、ob_get_contenst()で変数に代入する。
  3. 代入した内容を加工する(未検討)
  4. 加工した内容を画面に表示(echo)する。

file()を使ってファイルから配列に読み込もうとしたところ、htmlタグが削除されてしまった。 DOMDocument::loadHTMLfileからのsaveHTMLもやってみたが、今度はテンプレートファイルのPHPが稼働しないため、テンプレートパーツを読み込んでくれない。

むむむ。というわけで、今回は上記出力バッファを使った方法で進めてみる。

この仕事を実装しようとすると、言語仕様が固まらないとテンプレートの仕様に影響するとわかったので、言語周りのDAOを先にコーディングすることにした。

言語仕様

こちらはgetTr()というメソッドを定義してやって、ファイルの要所で言語tableを読み出し、挿入していくという方法を考えている。

databaseへのアクセスが繰り返されると負担になりそうな気もするので、なんか一回で終わらせる方法を考えてみたいが……難しいかな。

テンプレートファイルをrequire_once()する前に、テンプレートファイル側でDaoを呼んで言語テキストは埋めてしまうことにする。読み込んでから加工するの難しそう。サーバーの負荷は大きめかしら……。

で、言語テキスト込みのテンプレートを読み込んでおいてから、データを埋め込んで出力する、と。そう考えるとview一つでもけっこうあれこれ処理があるなぁ。