![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
デザインとプログラムを分離して書くために参考書を参考にし、
以下のようなユーザ定義関数を作りました。
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は使わずに書きたいと思っています。
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
簡単にすませるなら……
display関数のなかで htmlspecialchars(...) しないで、
$data["..."] に代入するときにする。
data.txt は foreach でタグを組み立てて、htmlspecialchars(...) しないで、そのまま $data["..."] へ代入。
かな?
でも本気でロジックと表示を分離させたいなら、テンプレートの仕様を考えて、テンプレートファイルをパースして、仕様の通りに展開するエンジンを実装した方がいいよ?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
csvの内容を行単位で削除したい
-
VBAでcsvファイルもシートもあ...
-
stdClass Objectを連想配列のよ...
-
xml取得値を文字列と比較
-
別ファイルの構造体の値を読み...
-
CSVデータの行数カウントをした...
-
Call to a member function on ...
-
PHP 別ドメインへのファイル保存法
-
CSVファイルの最終行のデー...
-
C言語でCSVファイルの行数を読...
-
文字列変換について
-
PHPでサーバー上の書き換えたht...
-
自動で番号を振りたい
-
stream_get_contentsの代替関数
-
readdirで文字化け
-
配列の要素(value)に、変数を...
-
掲示板のあらし対策
-
ftokが動かない?
-
file_existsでファイル名の部分...
-
foreachのなかで次のキーを参照...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPからCSVをアップロード後、m...
-
別ファイルの構造体の値を読み...
-
CSVデータの行数カウントをした...
-
Resource id #3 と表示されま...
-
C言語でCSVファイルの行数を読...
-
複数行のデータのPOST処理に関して
-
ヒアドキュメントの中のfor文
-
CSVファイルの最終行のデー...
-
自動で番号を振りたい
-
バイナリファイルの内容を、そ...
-
csvの内容を行単位で削除したい
-
FortranのOPEN文
-
ログファイルが一定行数を超え...
-
行数が30万件ほどあるCSVから、...
-
配列をファイルに書き込む方法
-
テキストデータから指定行の削除
-
stdClass Objectを連想配列のよ...
-
エラーメッセージ(無効な間接...
-
PHPでサーバー上の書き換えたht...
-
PHPでCSVの一部の行を編集したい
おすすめ情報