2008-09-01 3 views
5

このプロジェクトでは、ビューにメリットがないと考えている別のプログラマーと議論に巻き込まれているようです。彼は、PHPが次のようなシステムを提案しています。ビューを使用するかビューを使用しないようにする

$draw = new Draw; 
$nav = $draw->wideHeaderBox(). 
$draw->left(). 
    $draw->image(). 
     Image::get($image,60,array('id'=>'header_image')). 
    $draw->imageEnd(). 
$draw->leftEnd(). 
$draw->left(10). 
    '<div id="header_text">'. 
     self::defaultSectionText(). 
    '</div>'. 
$draw->leftEnd(). 

など(これはコントローラbtwにあります)。今これについての彼の議論は、実際にはある意味で、再設計があれば、HTMLをある場所で変更するだけで、どこでも自動的に変更されると主張しています。しかし、何らかの理由でこのメソッドはまだ私に間違ったやりかたをしていますが、この方法ではビューのメリットはありますか?私は手でHTMLを再入力する必要がないことを意味します。

答えて

5

HTMLタイムセーバーは便利ですが、直感的でわかりやすい場合にのみ役立ちます。 new Drawをインスタンス化することは非常に自然な音ではありません。さらに、wideHeaderBoxleftは、システムを親密に知っている人にとって重要な意味を持ちます。 の場合、あなたの同僚のミューズのような再設計は何ですか? wideHeaderBoxが非常に狭くなったらどうなりますか? PHPメソッドによって生成されたマークアップ(およびスタイル、推測可能)を変更しますが、コードを呼び出すために非常に不正確なメソッド名を残しますか?

君たちはただは、ビューファイルに散在それを使用する必要があり、それが役に立つ/本当に必要だどこあなたは、このようなこのようなものとして、それを使用する必要があり、HTMLの生成を使用するを持っている場合:

HTML::link("Wikipedia", "http://en.wikipedia.org"); 
HTML::bulleted_list(array(
    HTML::list_item("Dogs"), 
    HTML::list_item("Cats"), 
    HTML::list_item("Armadillos") 
)); 

上記の例では、実際にシステムに精通していない人たちには、実際にメソッド名が意味を持ちます。また、めったに訪れなかったファイルに戻って自分が何をしているのか疑問に思ったときに、彼らは皆さんにもっと意味をなさないでしょう。

1

彼が使用する引数は、に必要な引数です。ビューです。どちらも1か所で変更するだけです。しかし、彼のバージョンでは、ビューマークアップとビジネスコードを混在させています。

私はテンプレートデザインをもっと使うことをお勧めします。 PHPでビジネスロジックをすべて行い、ページで必要なすべての変数を設定します。そして、あなたのページマークアップにそれらの変数を参照させてください(ビジネスロジックはまったくありません)。

あなたはスマイリーを見ましたか? http://smarty.php.net

1

私は過去にそういったことをしていましたが、それは時間の無駄でした。たとえば、基本的には、HTMLですでにできるすべてのラッパーを作成する必要があり、いくつかのことを忘れてしまいます。レイアウトで何かを変更する必要があるときは、「シュート、私はそれを忘れてしまった。別の方法をコードしたり、別のパラメータを追加しなければならない」と思うだろう。

究極的には、今から何ヶ月も使用する方法を誰も知らないか、覚えていないHTMLを生成する関数/クラスの巨大なコレクションがあります。新しい開発者は、何かを変更する前にこのシステムを学ぶ必要があるので、このシステムを使用するためにあなたを呪うでしょう。これとは対照的に、抽象的なHTML描画クラスよりもHTMLを知っている人が多いでしょう。時には純粋なHTMLで手を汚さなければならないこともあります。

1

これはかなり冗長で正直なところは難しいようで、コードの一部は非常にレイアウト情報のようです。

私たちは常にロジックを出力からできるだけ分割しようとします。しかし、多くの場合、ビューとデータは、両方の部分と非常に密接に関連しており、どの部分がどのように表示されているかを決定しています(たとえば、単純な電子商取引サイトでは、これには適切なhtmlを追加するためにビューを変更し、ビジネスロジックを利用して株式の価値を把握することが明らかになります)。

これを行うために2つのファイルを管理する考えがあまりにも大きければ、ファイルの数を増やすことなくほとんどのメリットを得るために、「データを収集する」と「表示する」の部分に分割してみてくださいあなたは管理する必要があります。

1

htmlで直接作業する方がずっと簡単です。あなたはHTMLで作業するだけで、抽象レイヤーを1つ減らします(html - >実際のWebページ/ PHP関数 - > html - >実際のWebページ)。

私は実際には、このケースでは「1つの場所でそれを変更しなければならない」ものはうまくいかないと思っています。これは、関数の出力を変更したい場合は1回だけで済みます。確かに引数を使用することができますが、すぐにいくつかの引数を持ついくつかの関数で終わるでしょう。ヤック

テンプレート言語/システムでは、しばしば、サブテンプレートを含めることができ、再利用可能なhtmlブロックを持つことができます。

私があなたの会社で始めたばかりで、どこにいてもそのようなコードを見た場合、私の最初の考えは 'まあまあ!もう一度新しい仕事が必要です。