在php中回显函数是不好的做法吗?

时间:2013-03-08 18:35:34

标签: php

使用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(); ?>

....

我不确定如何“接受”回声功能?

6 个答案:

答案 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只是根据该逻辑处理渲染视图。