2009-08-15 45 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 
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; 
    } 
} 

在你的情況下,模板會是這樣:

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

你可以解開與模板參數的數組,但我寧願保持它在一個地方,所以代碼不那麼混亂。 (你總是知道來自輸入的內容以及模板中定義的內容,爲了縮短內容,可以使用$ _而不是$ arg。)對於這樣一個小例子來說,好處並不明顯,但對於較大的模板,它可以節省大量的變量操作,因爲您可以使用PHP自己的模板功能。

+0

我想我明白你的說法,而不是創建一個函數來做到這一點,我應該創建一個單獨的文件,該文件只是一個模板,只是通過數據,然後顯示該文件的內容。那麼,如果我有數據流顯示,並且我需要一個foreach或者一個while循環,那麼這個樣式是否仍然適合? 所以我猜,當他們說從演示中分離出邏輯時,他們真的意味着它。 – BDuelz 2009-08-15 05:13:05

+0

+1這是一個更好的解決方案。 – karim79 2009-08-15 06:36:00