2009-08-15 13 views
2

私は特定のサイトに指定されたクラスを持っています。そのサイトでは、データベースからデータを取得し、そのデータを配列に格納するさまざまな機能を持っています。私は同じクラス内でデータを受け取り、htmlにフォーマットし、データベースからデータを含むhtmlを返す他の関数を持っています。例えばPHPクラスを使用してHTMLを書式設定するには?

...

function GetUserProfile($userID){ 

    $query = 'SELECT * FROM users WHERE userID='.$userID; 

    ....... 

    blah blah blah 

    ....... 

    $user = mysqli->fetch_assoc(); 

    return $user; 

} 

function FormatUserProfile($user, $showDesc = false){ 

    $profile = '<h1>'.$user['userName'].'</h1 >'; 

    if($showDesc){ 

    $profile .= '<div>'.$user['description'].'</div >'; 

    } 

    return $profile; 

} 

...

だから私は、単に情報を収集する機能を持っていた、との情報を集め、単に形式に別の関数場合。 主に私は別のページに同じデータを表示しますが、異なるページは異なるデータを表示するため、検索でユーザー名が表示されます。ユーザープロファイルページでユーザー名と説明などが表示されます。

これは良い方法ですか、これを行うには良い方法がありますか?

答えて

1

これは良い習慣です。個人的に、私は次のテンプレート「エンジン」を使用:あなたはテンプレート引数に配列を解凍でき

<?php 
echo '<h1>'.$arg['user']['userName'].'</h1>'; 
if($arg['showDesc']){ 
    echo '<div>'.$arg['user']['description'].'</div>'; 
} 
?> 

が、私は維持することを好む:

<?php 
class Template{ 
    static function show($path, $arg = NULL){ 
     include "templates/$path.php"; 
    } 

    static function get($path, $arg = NULL){ 
     ob_start(); 
     self::show($path, $info); 
     $block = ob_get_contents(); 
     ob_end_clean(); 
     return $block; 
    } 
} 

をお使いの場合、テンプレートは次のようになりますそれはすべて1か所にあるので、コードはあまり混乱しません。 (あなたはいつも入力から何が来ているのか、そしてこのようにテンプレートに定義されているものを知っています。物事をもっと短くするために、$ argの代わりに$ _を使うかもしれません。)このような小さな例の場合、より大きなテンプレートの場合は、PHP独自のテンプレート機能を使用することができるため、多くの変数操作を節約できます。

+0

私は私があなたのことわざは、代わりにこれを行うための機能を作成するので、私はちょうどテンプレートで別々のファイルを作成し、ちょうど通過しなければならないかを理解だと思いますデータを表示し、そのファイルの内容を表示します。だから私は、表示するデータのストリームがある場合、私はforeachまたはwhileループが必要です、このスタイルはまだそれに適しているだろうか? プレゼンテーションとは別の論理を言うと、彼らは本当にそれを意味します。 – BDuelz

+0

+1これは良い解決策です。 – karim79

関連する問題