在HTML中嵌入PHP代码?

在HTML中嵌入PHP代码?,php,html,Php,Html,我只是想知道在HTML中嵌入PHP是正常的,还是被认为是肮脏的/不专业的。例如,考虑以下几行: <? if($photo == 0) { ?> <div class ="reminder">Hey <?=$name;?>, You don't have any photo. </div> <? } else { ?> <div class ="ok">Do you want to change your p

我只是想知道在HTML中嵌入PHP是正常的,还是被认为是肮脏的/不专业的。例如,考虑以下几行:

<? if($photo == 0) { ?>
    <div class ="reminder">Hey <?=$name;?>, You don't have any photo. </div>
<?  } else { ?>
    <div class ="ok">Do you want to change your photo? </div>
<? } ?>

嘿,你没有照片。
你想改变你的照片吗?
这种代码行吗?如何以干净/专业的方式完成类似的工作(没有PHP框架?)
谢谢。

我尽量将此限制在最低限度,因为我发现用所有的 < ? } ?>
在代码中流动(wordpress主题大师经常这样做)

这很正常,好与坏是完全不同的话题。这实际上是关于项目的规模和可维护性/灵活性的要求


如果这是一个小项目,那就做你必须做的事情来完成它。然而,在没有框架的情况下,开发会变得非常困难。这都是非常主观的,每个项目都不同,但这是一般原则。

对此会有很多意见。混合HTML和PHP可能会变得非常混乱,但这看起来不错。许多专业人士就是这样工作的。如果对你有用,那就好了

为了让它更具可读性,我倾向于将括号放在单独的行上,这样你就可以很容易地找到它们,但这就是我。

只要你将程序的逻辑保持在html之外,就可以了。例如,您需要将其混合到模板中。像smarty这样的模板引擎将{$myVar}替换为<?php echo$myVar;?>(简单地说),因此不可能完全避免。但是

<?php

include "db.php";
connect_db();

// check login

echo "< html >< head><body>...";

?>

这不是一个好的做法,因为您将所有内容混合在一起:程序逻辑(登录检查、数据库内容)和输出(echo html)。只要看一看,并记住“关注点分离”


您的示例看起来不错,因为html中只有直接控制输出所需的逻辑。但是,计算$photo的值(例如,取决于db条目)在html中并不好,因为这是程序逻辑。输出(HTML)和逻辑应该一直分开。

在模板中使用PHP是可以的,但许多人更喜欢使用模板语言,因为它强制分离,并确保您不会在模板中浪费大量PHP。如果你真的走模板路线,并且做得很好,因为他们将模板编译成PHP,这会加快速度

如果您在模板中编写PHP,请尝试遵循一些最佳实践编码标准,以保持整洁。例如:

  • 充分利用 你想改变你的照片吗? 更多信息,请访问:


    为此,您可以使用smarty templete。。。。它改进了您的编码风格,工作速度很快。。。访问并尝试一下,这真是太棒了

    有一个叫
    的家伙的回答 不知道他为什么要删除它,这看起来是我最好的答案,所以,我只是复制它:

    我会说这就是路。你 有一个很好的,干净的PHP分离 和HTML

    还有一个选择:

    
    嘿,你没有照片。
    你想改变你的照片吗?
    
    从我所读到的内容来看,这两种方法都是可行的,但大多数人只是将echo语句用于小的、有条件的html。

    尝试使用不要尝试使用
    在模板中尝试,你会发现这只是浪费空间。你能提供smarty代码示例来做同样的事情吗?
    
    <?php if ($photo == 0): ?>
       <div class ="reminder">Hey <?php echo $name ?>, You don't have any photo.</div>   
    <?php else: ?>
        <div class ="ok">Do you want to change your photo?</div>
    <?php endif ?>
    
    <? if($photo == 0): ?>
        <div class ="reminder">Hey <?=$name?>, You don't have any photo. </div>
    <?  else: ?>
        <div class ="ok">Do you want to change your photo? </div>
    <? endif ?>