繁体   English   中英

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

[英]php function show result in html best practices

我有两种方法来显示结果在/使用html标签:

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

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');

第二种方式:(将html与功能分开)

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;
}   

结果( again foreach loop ):

<?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>";
});

您可以根据需要创建任意数量的匿名函数装饰器,这使原始功能非常强大且非常灵活。

尽管以上两个链接均涉及对象,但是相同的原理可以并且可以应用于功能。 过去,我将两种模式结合使用非常成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM