是否有正确/更好的方式将HTML交叉到PHP,反之亦然

时间:2012-12-18 12:17:06

标签: php

我有时会像其他人一样下载示例代码以节省时间而不必重新发明轮子

我刚刚在一个非常复杂的代码函数之后遇到过这个问题,所以编写它的人似乎知道他们在做PHP的事情:

<?php if (isset($menu)) { ?>
    <?php echo $menu; ?>
  <?php } ?>

为什么不写信:

<?php if (isset($menu)) { echo $menu; } ?>

好奇哪个更好,如果是,为什么?

7 个答案:

答案 0 :(得分:2)

这纯粹是品味/风格的问题,它对功能甚至系统设计都没有影响。就像替代语法不会以任何方式影响任何方式,除了样式。这可以写得非常好:

<?php if (isset($menu)): echo $menu; endif ?>

它会是同样的事情。

但请注意,对于纯逻辑文件,打破PHP通常是一个坏主意。以下代码:

<?php if ($test == 1) { ?>
    <?php ++$test; ?>
<?php } ?>

类似于:

<?php

if ($test == 1) {
    echo "    ";
    ++$test;
}

引入了打印四个空格(或制表符,或用于缩进<?php ++$test; ?>块的任何内容)的不必要且经常被忽略的副作用。同样的事情适用于结束?> - 通常最好将它留在纯逻辑文件中,因为编辑者倾向于在文件的末尾添加一个空的换行符,如果它跟随{{1 },将?>编辑。

答案 1 :(得分:1)

在第一个示例中,没有必要关闭然后重新打开PHP标记,它可以像在示例2中提供的那样完成。

<?php
    if(isset($menu)){
        echo $menu;
    }
?>

您需要关闭然后重新打开标签的唯一原因是,如果您还希望打印更多HTML:

<?php
    if(isset($menu)){ ?>
        <div id="menu">
            <?= $menu ?>
        </div>
    <? }
?>

答案 2 :(得分:0)

对我来说,这只是一个偏好问题以及我想要实现的目标......

在100%PHP代码文件中,我可以这样做:

if (isset($somevariable))
{
    // do some stuff here
}

甚至是

if (isset($somevariable)) echo htmlentities(print_r($somevariable, true));

在混合的HTML / PHP文件(例如视图)中,我可以这样做:

<table>
<?php foreach ($result_set as $row) : ?>
    <tr>
        <td><?php echo $row['column']; ?></td>
    </tr>
<?php endforeach; ?>
</table>

我觉得更容易区分

我没有“更好”的意见

答案 3 :(得分:0)

两个snipplet之间没有功能差异。

代码最初可能看起来像这样:

<?php if (isset($menu)) { ?>
<a href='home.php'>Home</a> | <a href='links.php'>Links</a>
<?php } ?>

并且第二条线已经被动态生成了。

答案 4 :(得分:0)

我能看到的唯一原因是,如果HTML中包含HTML,例如

<?php if (isset($menu)) { ?>
    Html stuff here
<?php echo $menu; ?>
    More html stuff here.
<?php } ?>

然而,我无法想象任何实际目的。

我个人会做类似你的例子2.没有理由打破PHP。

答案 5 :(得分:0)

如果您启用了PHP短标签,则可以使用

<?=$menu ?>

表示与下一行完全相同:

<?php echo $menu;?>

对于你的情况,这可能是有用的,但可能不太清楚

<?=isset($menu)? $menu : "" ?>

如果您想要合并线条,请记住允许换行:

<?php
    if(isset($menu)){
        echo $menu;
    }
?>

如果您不喜欢搞乱代码,也可能需要使用Google PHP模板库。

答案 6 :(得分:0)

只是一个想法而不是一个问题,但我不能在评论中发布代码,所以这里就是。

也许这只是遗留格式? 即以前它是这样的:

<?php if (isset($menu)) { ?>
    <p>Here comes the menu!</p>
    <?php echo $menu; ?>
    <p>So how did you like it?</p>
<?php } ?>

然后其他人删除了HTML并使PHP保持不变。

无论如何,我同意@Matt Clark(甚至在他编辑答案之前:))和@rid以及其他人认为代码应该易于阅读并根据行业标准进行格式化。