2009-03-23 5 views
0

何が良いですか... html、sthをレンダリングするためのクラスを特別に作成します。プレゼンテーション(XHTML)と機能(PHPコード)をどのように区別しますか?

class IndexHTML { 
    public $doctype = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"; 
    public $title = "<title>MICE</title>"; //title of document 
    public $contentType = "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />"; 
    public $contentStyleType = "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />"; 
    public $jsSrc = "<script type=\"text/javascript\" src=\"main.js\"></script>"; //your javascript files included 
    public $css = "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />"; //your css files included 

    function html_head(){ 
     echo $this->doctype."<html><head>"; 
     echo $this->title,$this->contentType,$this->contentStyleType,$this->jsSrc,$this->css; 
     echo "</head>"; 
     require_once("classes.php"); //require additional needed scripts 
    } 
} 

またはそれは、(ヘッドのみ必要なタグ付き)head.htmlのような別々のファイルを書き込むmenu.html、footer.htmlなどして、唯一の書き込みに優れている:

class IndexHTML {  
    function html_head(){ 
     require_once("head.html");  
    } 
} 

このような私はPHPで新しく、物事を扱う適切な方法を学ぼうとしています。

EDIT:メンテナンスのためには、個別のファイルが適しています。パフォーマンスはどうですか?

ありがとうございました。

答えて

8

これは私の意見では、PHPの優れた点は、HTMLテンプレートエンジンであり、クラス/オブジェクトはそれには本当に横向きであるということです。あなたのIndexHTMLクラスは本当に多くの価値を追加しません。あなたはちょうどそれのためにオブジェクトモデルを作成しようとするよりむしろいくつかの動的なコードブロックと式で.htmlファイルとして.phpファイルを扱うほうが良いです。

+0

これらの設定では、変更可能性が災害になります。 –

+0

cletusともっと同意できず、d03boyとあまり同意できませんでした。一度だけ、これらのタイプの質問に対する最初の反応が「スマイリーを使用する」ではない場合、それを愛するでしょう。 – da5id

+0

変更可能性については、C日のように扱います:機能的分解。私はひどく書いたPHPの300k行を20k行のきれいなPHPに置き換えました。かなり小さなコードで新しいページ区切りテーブルページを一緒に投げるのはかなり簡単でした(例えば – cletus

0

この場合、別のインクルードを使用する方が、読みやすくメンテナンス可能なコードが多くなるので、より良い方法です。一般的に私は、PHPを使ってHTMLを出力するのにecho文を使用することに強く反対しています。

0

私はPHPコードだけで自分の小さなコントローラを作っています。私はそれから、myController.myAction.htmやmyController.form.htmなどのような名前の "views"を持つhtml-includeディレクトリを持っています。その後、私のロジックに応じて、適切なビューを "include"します。私のコントローラの。これにより、データベーストランザクションやビジネスロジックの後にコントローラに設定したすべての変数にアクセスできるようになります。

これについて私の好きなことは、それが非常に簡単であり、それは柔軟性のトンを可能にすることです。また、URLを書き換え、適切な命名規則を使用してコントローラとビューを整理すると、きれいにすることができます。

0

使用Smartyのテンプレート

1

PHPでこれを行うのない「適切な方法」はありませんが、唯一の様々な受け入れられた「グッドプラクティス」と多くの平凡なと単純に悪いもの。 PHPはそれを行うための素晴らしいオープンスペースを提供しますが、それはあなたには合理的です。これは間違いなく最大の強みです。しかし、これも大きな責任です。ちょうどあなたがすることができますあなたは好きですが、する必要はありません。

私はさまざまな方法でこれを行う数多くのプロジェクトを見てきました。現在の方法では、通常はセントラルディスパッチコントローラを備えたフレームワークを使用して、データ操作、データアクセス、およびデータプレゼンテーションを分離する必要があります。彼らはあなたのディレクトリを整理する方法とファイルを見つける場所について独自のルールを持っています。

古い方法では、各ファイルをページとして扱いました。ファイルの先頭には、データベースハンドラやその他の抽象概念を含む環境を設定するいくつかの部分があり、ページの共通要素を構築するための関数も定義されています。ファイルは2つの半分に分かれていました。最初の半分ですべての処理とアクセスを行い、後半には出力を構築しました。そのバリエーションには、出力用に別のファイルが含まれています。 IMEは、これはPHPの精神に近く、最初から作業を行う方が簡単です。

0

私はPHPを初めて使いましたが、私は何年もDelphiをプログラミングしてきました。 Delphiと同様に、ロジックとプレゼンテーションを組み合わせた簡単に保守可能なPHPコードを開発できないようにすべき理由はありません。私は、パラメーターの受け渡し(例えば、埋め込まれた変数名を持つHTMLをテンプレートの一種として渡すなど)によって接続されたモジュラー機能要素の形でコードの再利用性を選択する傾向があります。また、時にはホイールを再発明することが元のホイールの仕組みを学ぶ最も良い方法です。そのため、Smartyのようなサードパーティのテンプレートソフトウェアを使用する代わりに、Smartyのインスピレーションを得て独自のテンプレートシステムを開発してください。

関連する問題