使用PHP类格式化html?

时间:2009-08-15 04:02:06

标签: php oop

我有一个为某个网站指定的课程。在该站点中,我有不同的功能从数据库中检索数据并将该数据存储到数组中。我在同一个类中有其他函数来获取数据并将其格式化为html并返回包含数据库中数据的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; 

} 

...

因此,如果我有一个单独收集信息的功能,另一个功能是单独格式化收集的信息。 主要是因为我将在不同的页面上显示相同的数据,但不同的页面显示不同的数据,例如搜索只会显示用户名称,例如用户个人资料页面会显示用户名和描述。

这是一种好的做法,还是有更好的方法来做到这一点?

2 个答案:

答案 0 :(得分: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自己的模板功能。

答案 1 :(得分:0)

您可以使用Smarty模板引擎或其他东西 类似。

它的模板分开存储,如下所示:http://www.smarty.net/sampleapp/sampleapp_p5.php