使用php中的函数回显一堆HTML并使用类似这样的东西是不好的做法:
function my_function() {
global $post;
$custom_fields = get_post_custom();
$some_field = $custom_fields ['some_field'][0];
?>
<div class="something <?php if ($some_field) { echo $special-clas;} ?>">
<div class="something-else">
/* bunch more of html code */
</div>
</div>
}
然后在你想用它回应它的页面中?
<html>
<body>
.....
....
<?php echo my_function(); ?>
....
我不确定如何“接受”回声功能?
答案 0 :(得分:6)
考虑两个功能:
function does_return() {
return 'foo';
}
function does_echo() {
echo 'bar';
}
does_return(); // nothing displayed
echo does_return(); // 'foo' displayed
does_echo(); // 'bar' displayed
echo does_echo(); // 'bar' displayed
在这两种情况下,都可以执行输出,但它的发生方式有所不同。由于does_return()
本身没有任何代码可以在其定义中执行输出,因此输出由调用代码决定,例如你执行的echo
。
使用does_echo()
,无论你如何调用函数(有或没有echo)都没关系,因为函数自己执行输出。无论如何,你都会获得bar
。
现在考虑一下:
function this_is_fun();
echo 'foo';
return 'bar';
}
this_is_fun(); // outputs 'foo'
echo this_is_fun(); // outputs 'foobar';
答案 1 :(得分:2)
这是不好的做法,因为它会使您的代码难以维护。
使用类似的功能,您可以混合逻辑和演示。所以,当你在输出中看到一些你不喜欢的东西时,你不能确定先去哪里去改变它。你去了页面代码或功能代码吗?
答案 2 :(得分:1)
我不知道这是多么糟糕的做法。只要您重复使用该功能,那么您似乎正在以正确的方式使用它。
你唯一不应该做的就是使用global
;而是将$post
传递给函数。 See this answer为什么。
由于您的函数已有输出,因此您不需要echo
。
my_function( $post );
答案 3 :(得分:1)
函数应该返回数据,然后您的应用程序按照您的意愿处理它,无论是将其分配给变量还是将其回显。
答案 4 :(得分:0)
没关系。我宁愿看到PHP完全混入HTML。
如果您想编写更少的代码,可以使用<?= my_function() ?>
。
答案 5 :(得分:0)
@DaveRandom在评论中说道。除此之外,不,这不一定是不好的做法。但它可以使代码难以调试。考虑一种MVC方法,而逻辑主要在Controller中,View只是根据该逻辑处理渲染视图。