テンプレートエンジン

 何とかPHPに慣れてきたため、最初は全部自前で書くつもりだったのを、この際やはりテンプレートエンジンを使おうと考え直しました。
 ただ、何せ勉強でやり始めたとあって、そもそも表示ページ用PHPファイルと、インクルードするPHPファイルを同じ場所(ドキュメントルート下)に置いてしまったんですよね。でもこれでテンプレートエンジン(Smartyを使用)用に書き直すともっとごちゃごちゃしてくるし、そもそもセキュリティ的にまずいし――ただでさえセキュリティホールを作りこみやすいPHPなので、インクルードするものはドキュメントルートより上に置くようにしました。ちょっと修正が面倒だったけど。

 しかしPHPって、どっか一ヶ所に基準パスを指定しておいて、それを使うようにはできないんですかね。一応汎用で使うPHPファイルに定数としてパスを定義してみたけど、その個々のファイルからそれをインクルードするには、やっぱり相対なり絶対なりのパス指定が必要で、変更したいとなったときは試用箇所全部変えないといけない。PHPではどう書くのがセオリーなんだろ。
 もっともHTMLで各種ファイルを指定する際もパスを含めて書くわけだから、PHPも普通にそれなんだろうな。
 でもまあ一応ディレクトリ構成をやりなおして動作確認はしたので、これでSmarty導入の前準備は終わり。とりあえず一番簡単な、フレームのヘッダページだけSmarty対応にして表示することはできました。
 ――うん、ページのデザインとロジックが切り離されていい感じ。
 あとは条件文やループなど、各種制御構文を覚えないと。

新しいディレクトリ構成

 さて、見よう見まねでSmarty対応は終わったけど、既にそこそこのページ数を作ってあっただけになかなか煩雑でした。まあ、ビューとロジックがごっちゃになってたしね。

 Smarty対応後のディレクトリ構成は以下のとおり。
 ドキュメントルートは●ディレクトリという前提。もっともうちの環境ではちょっと理由があってこうしてるだけで、★がドキュメントルートでも支障なし。
■
│
├ [search] 十二国記サーチ用各種ディレクトリ
│   ├ [dat] データディレクトリ
│   ├ [log] ログディレクトリ
│   ├ [pg]  プログラムディレクトリ
│   ├ [smarty] Smarty用データディレクトリ
│   │  ├ [cache] ※要読み書き権限
│   │  ├ [configs] 定数ディレクトリ
│   │  ├ [templates] テンプレートディレクトリ
│   │  └ [templates_c] ※要読み書き権限
│   └ [ssn] セッション情報格納ディレクトリ
│
├ [smarty] Smatryのlibの内容をここに置く
│
└ [★]
     └ [●] ドキュメントルート
         └ [d] 十二国記サーチメイン
             ├ [img] 画像ディレクトリ
             ├ [pg]  PHPプログラムディレクトリ
             ├ [smpl] サンプルサイトディレクトリ
             └ [styl] スタイルシートディレクトリ
※ドキュメントルート下にさらにdディレクトリを設けているのは、検索避けを考慮したため。

2010/12/13 19:49:38更新
最終更新:2010年12月13日 19:49