人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPを始めたばかりの開発者です。質問内容は次の2つです。

1.「HTMLとPHPコードを分離」するとデザイナーとの分業に向き、
大規模開発に向かなくなる、と思うのですが、この考えは合ってますでしょうか?

2.「HTMLとPHPコードを分離」しつつ、(VからMを直接参照する)MVCのような感覚で構築できるテンプレートはありますでしょうか?


PHPの開発手法や紹介されるテンプレートを見てみると、
「PHPのコードとHTMLの分離」に主眼を置いているものばかり目につきます。
確かにHTMLとPHPを分離するほうが、見やすくなり、デザイナーとの共同作業に向いていると思います。

その一方で、「PHPコードとHTMLの分離」をしてしまうと、
HTMLの共通部分の抽出が難しくなるのでは?と思います。
例えば、こちらのMVCの図(http://ja.wikipedia.org/wiki/Model_View_Controller)
(※Vから直接Mを参照するMVCモデルです。Vから直接Mを参照「しない」MVCモデルではありません。)
のような機能分担でWebシステムを実装しようとした場合、「PHPコードとHTMLの分離」状態では実現が難しく思えます。

どうも、この2つはトレードオフの関係にあるように思えるのですが、間違ってないでしょうか。

●質問者: hogeTaro225
●カテゴリ:ウェブ制作
✍キーワード:HTML MVC PHP Web コード
○ 状態 :終了
└ 回答数 : 8/8件

▽最新の回答へ

1 ● pretaroe
●17ポイント

>1.「HTMLとPHPコードを分離」するとデザイナーとの分業に向き、

>大規模開発に向かなくなる、と思うのですが、この考えは合ってますでしょうか?

そんなことはないとしか言えない。

大規模開発なら、なおさら分業できないと辛いです。

なぜ大規模開発に向かないと考えるのかわかりません。

>「PHPコードとHTMLの分離」状態では実現が難しく思えます。

完全に分離することは難しいですので、妥協も必要です。

>2.「HTMLとPHPコードを分離」しつつ、(VからMを直接参照する)MVCのような感覚で構築できるテンプレートはありますでしょうか?

既存のフレームワークを使ってみてください。

PHPフレームワーク入門―CakePHP/Zend Framework/symfony/CodeIgniter対応
掌田 津耶乃
4798022772

◎質問者からの返答

ご回答ありがとうございます。参考になります。

他の方の回答も含めまして、概ねPHPとHTMLを分離しても大丈夫なのかなと思いました。

紹介して頂きました本に、いくつか全くチェックしてないフレームワークがありますので

また目を通してみたいと思います。



>完全に分離することは難しいですので、妥協も必要です。

>なぜ大規模開発に向かないと考えるのかわかりません。

もし時間があれば追加で質問をしたいのですが、

例えば、このページをPHPで作るとします。

するとこのページ内にいくつか共通の部分がありますよね。


・「x 回答者: xxxxx 2011-04-xx xx:xx:xx」で囲まれた部分

・「この回答に返信する □不適切な回答」で囲まれた部分


ここは掲示板(?)なので、PHP等でこの共通部分は出力するしかないのですが、

そうではなくて、もし、ここが普通の静的なページであったとして、同じように共通部分がいくつかあり、

また他のページでも使用する共通のHTMLが含まれていたとします。

これらを共通化したい場合は、やはり

>妥協も必要

のようにPHPコードを入れるという認識で合ってますでしょうか。


あ、あと、PHPからHTMLをツリー(JavaScriptがHTMLを解析する時のような、Compositeみたいな)

状に分解して制御できるようなフレームワークってありませんでしょうか。

(そうか、こういう質問にすれば良かったのかと今気が付きました。)


2 ● Galapagos
●17ポイント

1.「HTMLとPHPコードを分離」するとデザイナーとの分業に向き、

大規模開発に向かなくなる、と思うのですが、この考えは合ってますでしょうか?

間違っています。

大規模開発とは、プロジェクトマネージャを頭に、アーキテクト、デザイナー、DBスペシャリスト、ネットワークスペシャリスト、プログラマといった様々な職種のメンバーが集まって開発するものです。各々のメンバーが自分の守備範囲を明らかにするために、設計の段階でコードが分離できなければなりません。


「PHPコードとHTMLの分離」をしてしまうと、

HTMLの共通部分の抽出が難しくなるのでは?

そのご心配には及びません。

基本設計の段階で共通部分が整理され、必要に応じてフレームワークが導入されます。


Model View Controllerでの御懸念についてですが、前述のように基本設計の段階でModelの中の共通モジュールのI/Oインターフェースが定義されます。

ユーザー認証やセッション管理などの必要のないViewであれば、JavaScriptなどの手段によって共通モジュールのI/Oにアクセスするのはよく行われることです。


2.「HTMLとPHPコードを分離」しつつ、(VからMを直接参照する)MVCのような感覚で構築できるテンプレートはありますでしょうか?

テンプレートではなく、要素技術としてのAjaxがそれに当たります。

◎質問者からの返答

ご回答ありがとうございます。

他の方の回答も含めまして、概ねPHPとHTMLを分離しても大丈夫なのかなと思いました。

また大規模開発について大体の流れがわかった気がします。

いくつか分からない点があり、もしよろしければご回答をお願い致します。


>基本設計の段階で共通部分が整理され、必要に応じてフレームワークが導入されます。

共通部分が整理されるという事は、その共通部分は複数のHTMLにて使われるわけですよね。

Ajaxを使えばPHPを使わずに共通部分の使い回しが可能と思います。

でもそうではなくて、Ajaxを使わないで静的なページで共通部分を使い回ししたい場合、

「HTMLとPHPを分離」した状態でうまくする方法(フレームワーク)はありますでしょうか。

また、PHPからHTMLをツリー状に分解して制御できるようなフレームワークってありませんでしょうか。


3 ● online_p
●16ポイント

phpの中にhtmlを書くのは非常に簡単なものだけですね。メールの定型文とか。

◎質問者からの返答

ご回答ありがとうございます。

やはり分離が一般的なんですね。


もしPHPからHTMLをツリー状に分解して制御できるようなフレームワークご存知でしたら、

追加でご回答をお願い致します。


4 ● la-la-land
●16ポイント

Smarty(テンプレートエンジン)とか使うとHTMLの共通部分を外に出せます。

ツリー状については、どのフレームワークでもコントローラーからビューの振り分けができたりするかと思いますが。

◎質問者からの返答

ご回答ありがとうございます。

>Smarty(テンプレートエンジン)とか使うとHTMLの共通部分を外に出せます。

という訳で、Smartyをもう一回チェックしてきました。

確かに共通部分を外に出せるのですが。。。

実は他の開発環境から移ってきた人間でして、まだSmarty以外のフレームワークはほとんど見れてない(いや、Smartyもほとんど見れてない)状態なのですが、でも、どうも共通部分を出す方法に自由度がないと感じるんです。

というか、他にもいろいろ思うんですよね。

(紙面の都合?で、思うところについては他の方の返信に書く、つもりです。)


5 ● Galapagos
●16ポイント

「HTMLとPHPを分離」した状態でうまくする方法(フレームワーク)はありますでしょうか。

有名なところではSmartyがあります。


また、PHPからHTMLをツリー状に分解して制御できるようなフレームワークってありませんでしょうか。

申し訳ありませんが、「PHPからHTMLをツリー状に分解して制御」という意味が分かりません。具体的に説明をお願いします。

◎質問者からの返答

ご回答ありがとうございます。

>有名なところではSmartyがあります。

やはり有名ドコロはSmartyなんですね。

いろんな方の回答をみて考たのですが、

その人気のヒミツがわかって来た気がします。


「PHPからHTMLをツリー状に分解して制御」部分ですが、適当表現でスミマセン。。。

例えばJavaScriptでしたらinnerHTMLという関数(ブラウザに制限があるようですが)を使って、どんどんタグをHTMLに追加できますよね。

こういう機能がPHPにもあればなと思いまして。

これがあれば何が嬉しいかと言いますと、例えばAmazonの本の一覧のようなリストが必要な時に、見た目上はHTMLとPHPを分離した状態で、個数があらかじめ決まっていないリストを作る事ができるんじゃないかなと思いまして。


ただ、もうグダグダですが、ツリー状のフレームワークはありますか?という追加の質問はナシにしてください。


1-5件表示/8件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ