- ベストアンサー
OKWaveみたいなサイト
OKWaveのような、質問とそれに対応する答えをやりとりするサイトを開きたいと思っています。 OKWaveの「質問を表示している画面」を作ろうと思うのですが、HTML部分と、PHP部分を分けて管理したいと思っています。 現在、HTMLには、REQ_TITLE のように置き換えされることを想定して書かれています。 PHPのソースの中に組み込むと、HTMLの変更が難しくなりそうなのでできれば避けたいと思っています。 どうしたら、うまくHTMLとPHPを分離して、ソースを書くことが出来ますか
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
がると申します。 んっと。「HTMLと処理部分を分離する」のはとても大切なことで。最近では、MVCという名前でそういった思想が広がっているかと思います。 PHPだと有名なあたりでSmartyでしょうか。個人的にはあまりお勧めできませんが :-P # なので、私は個人的に「独自実装」でより「分離しやすいもの」をクラスライブラリ化しています。 とりあえず、MVCという単語からgoogleあたりで検索すると色々と情報など出ているかと思います。 ちなみに、もしSmartyを使う場合「絶対にテンプレートに処理を書かない」事で、多少なんとかなります。 私がSmartyをNGにする最大の理由は「多機能である」ことなので。 間違ってもifとか書いちゃだめです :-P
その他の回答 (3)
- SuperLe
- ベストアンサー率44% (434/977)
簡単なCMSにするのであれば、 kotaeru.php ----- <HTML><HEAD>-----CSSの設定など</HEAD> <BODY ID="BODY"> <?php $Q_NO=$_REQUEST["q"]; $A_NO=$_REQUEST["a"]; include("TOP.HTML");//あるいは TOP.PHP include("SIDEBAR.PHP"); include("HEAD.PHP"); include("MENU.PHP"); include("AD.PHP"); include("DISP_Q.PHP"); include("DISP_A.PHP"); include("FOOTER.PHP"); ?> というように、機能ごとに分離して、HTMLというようり、デザインはCSSを活用すると、結構簡単にできると思います。
<?php #設定やレイアウトの場所。 $top_html = <<<html HTMLの内容<br>を変数化してしまう。 html; ?> <?php #スクリプト本体 print "<html><head></head><body>"; print "$top_html"; print "</body></html>"; ?> こんな事もできたと思います。 あとは、細かな装飾はスタイルシートで、外部に分けちゃうとか。
- papillon68
- ベストアンサー率61% (42/68)
xojanさんこんにちは。 PHPを使用するということは動的なサイトを作りたいということだと思います。 HTML部分とPHP部分を分離したいということですが、できる部分とできない部分があります。 PHPの処理で変化しない部分(静的な部分)はHTMLを そのまま表示すればいいですね。 ですが、掲示板のようにデータベースなどからデータを読込みHTML表示する部分(動的な部分)は PHP(<?php?>タグ)中で行わなければなりません。 この動的な部分を少しでも分かりやすくするためには HTMLとして出力する処理をクラス化や関数化しておき、 クラス部分だけを変更すればHTMLの表示方法が変わる ようなものを作れば管理がしやすいと思います。 ◆data.txt(データファイル) ------------------------------------------------- data1 data2 data3 ------------------------------------------------- ◆index.php ------------------------------------------------- <html> <head> <title>静的な部分なのでPHPタグの外に記述</title> </head> <body> <table border="1"> <tr><td>データ</td></tr> <?php // データを出力する関数 function output($str) { print "<tr><td>$str</td></tr>"; } // データの読込み(改行ごとに配列の要素へ) $data = file("data.txt"); // データを関数output()により出力 foreach($data => $value) { output($value); } ?> </table> </body> </html> ------------------------------------------------- 簡単な例ですが、イメージとしては上記のようなものです。
お礼
実は、持っている本にSmartyが載っていたのですが、「インストール?えっ、PHPのモジュールか?レンタルサーバーだからそんなことできないよ」とか思って、全く読まずにスルーしてたんですが、もう一度読んでみると、どうやらそうじゃないようですね。 オブジェクト指向で大変そうですが、ちょっと使ってみます。どうもありがとうございました。