php函数在html最佳实践中显示结果

php函数在html最佳实践中显示结果,php,mysql,Php,Mysql,我有两种方法可以在html标记中/使用html标记显示结果: 第一种方法:(将html添加到函数中) 第二种方式:(将html与函数分离) 结果(再次用于每个循环): 哪种方法更好更快?将关注点分开始终是一种良好的设计实践。因此,第二种方法是最好的选择,因为它仅限于访问数据 考虑到这一点,您可以考虑将函数作为第三参数传递给将进行格式化的函数。这就是所谓的 函数是注释($id,$type,$decorator){ $db=mysqli_access::F(“从“.COMMENTS.”中选择消

我有两种方法可以在html标记中/使用html标记显示结果:

第一种方法:(将html添加到函数中)

第二种方式:(将html与函数分离)

结果(
再次用于每个循环
):



哪种方法更好更快?

将关注点分开始终是一种良好的设计实践。因此,第二种方法是最好的选择,因为它仅限于访问数据

考虑到这一点,您可以考虑将函数作为第三参数传递给将进行格式化的函数。这就是所谓的

函数是注释($id,$type,$decorator){
$db=mysqli_access::F(“从“.COMMENTS.”中选择消息、时间戳,其中pid=?和type=?和approved=1“,$id,$type);
foreach($db作为$row){
$commentdata[]=$decorator($row);
}
返回$commentdata;
}   
_是注释($id,$type,function($item){
返回“$item”;
});
您可以创建任意多个匿名函数装饰器,这使原始函数非常强大且非常灵活


尽管上面的两个链接都指向对象,但相同的原则可以也可以应用于函数。我过去曾成功地将这两种模式结合使用。

所以请进行调试。同时想想——当有人要求你添加另一个风格迥异的文章页面时,你会怎么做?@u_mulder:我需要显示所有帖子和页面的评论。如果
$type
为该值。确定,一个页面将有注释,其中时间戳将被包装在
中。还有一个-没有
span
。你会怎么做?实际上是第二条路!老实说,这真的不是一个装饰图案。我明白你的意思,这是一个很好的解决方案。但是decorator模式可以处理类和对象。decorator模式也可以扩展到函数,并且经常用于函数编程。
function _is_comments_($id,$type){

    $db = mysqli_access::F("SELECT message,timestamp FROM " . COMMENTS . " WHERE pid = ? AND type = ? AND approved = 1 ", $id, $type);

    foreach($db as $row){
      $commentdata = '<p>'.$row['message'].'-'.$row['timestamp'].'</p>';
    }
    return $commentdata;
}   
echo _is_comments_('125','article');
function _is_comments_($id,$type){

    $db = mysqli_access::F("SELECT message,timestamp FROM " . COMMENTS . " WHERE pid = ? AND type = ? AND approved = 1 ", $id, $type);

    foreach($db as $row){
      $commentdata[] = $row;
    }
    return $commentdata;
}   
<?php
$comments_list = _is_comments_('125','article');
foreach($comments_list as $row){ ?>
<p><?php echo $row['message'].'-'.$row['timestamp'];?></p>
<?php 
}
?>
    function _is_comments_($id,$type, $decorator){

        $db = mysqli_access::F("SELECT message,timestamp FROM " . COMMENTS . " WHERE pid = ? AND type = ? AND approved = 1 ", $id, $type);

        foreach($db as $row){
          $commentdata[] = $decorator($row);
        }
        return $commentdata;
    }   

_is_comments_($id,$type, function($item){
    return "<span>$item</span>";
});