[英]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.