dポイントプレゼントキャンペーン実施中!

デザインとプログラムを分離して書くために参考書を参考にし、
以下のようなユーザ定義関数を作りました。


function display($template,$data){
foreach($data as $key => $val){
$$key=htmlspecialchars($val,ENT_QUOTES);
}
require_once($template);
}

例えばメールフォームの場合、フォームから入力されたデータを

$data["name"]=$_POST["name"];
$data["kenmei"]=$_POST["kenmei"];
$data["honbun"]=$_POST["honbun"];
$data["seibetu"]=1;

display("kakunin.php",$data);

このような感じで渡し、良い感じに分離できました。
しかし、このユーザ定義関数を使ってブログを作成しようと考えたところ、
分離がうまくできませんでした。(結局デザイン側のソースにforeachやらなんやら書くことになってしまい、汚くなる。)

ブログ作成の場合、どのような感じでデザインとプログラムを分離するのか一例を教えていただけないでしょうか?

※投稿データをテキストデータ(data.txt)へ一行づつ保存する。
※テキストデータ(data.txt)が空でなければforeachで展開し、記事を一覧表示

この2点を想定した場面での分離方法を、どなたかご教授ください。
smartyは使わずに書きたいと思っています。
宜しくお願い致します。

A 回答 (2件)

簡単にすませるなら……



display関数のなかで htmlspecialchars(...) しないで、
$data["..."] に代入するときにする。

data.txt は foreach でタグを組み立てて、htmlspecialchars(...) しないで、そのまま $data["..."] へ代入。

かな?

でも本気でロジックと表示を分離させたいなら、テンプレートの仕様を考えて、テンプレートファイルをパースして、仕様の通りに展開するエンジンを実装した方がいいよ?
    • good
    • 0
この回答へのお礼

とらあえずそのやり方でやってみます。
ご回答ありがとうございました。

お礼日時:2012/03/31 07:29

すでにあるテンプレートエンジンを利用する。


定番はSmartyだろうね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!