【问题标题】:php modes breaking out of php or notphp模式是否脱离php
【发布时间】:2009-05-31 10:54:45
【问题描述】:

我问了另一个关于 HTML 和 PHP 分离的问题,因为我在教程和示例页面上看到了对它的引用,但我发现 HTML 和 PHP 的分离与人们实际评论的不同,我认为这是 PHP 模式.

这是否打破了PHP。应该做吗?重要吗?

回显我的 HTML 输出是否只是一个偏好问题,还是我应该打破它来显示它?

例子:

<?php

echo '<html'>;

?>

对比

<?php

dostuff();

?>

<html>

<?

morestuff();

?>

【问题讨论】:

  • 与我之前向您展示的关于通过 MVC 方法进行分离的优缺点相对相同。

标签: php html


【解决方案1】:

我假设“爆发”是指:

<?php foo(); ?>
test
<?php bar(); ?>

相对

<?php
    foo();
    echo("test");
    bar();
?>

嗯,第一个解决方案的一个优点是您的布局在 HTML 编辑器中仍然或多或少具有可读性。此外,它分离布局和逻辑,至少比其他变体更多。它可能也比第二个选项稍微快一些,因为不需要解析和回显字符串。另一方面,拥有大量单独的 PHP 块可能真的很难阅读,因为语义相关的东西会突然分裂。当然,您也可以将这两种方法结合起来。

我认为这里的底线是,一旦您需要进行如此多的格式化和回显,以至于您的程序逻辑变得非常模糊,您应该考虑使用“真正的”模板引擎。

【讨论】:

  • 谢谢!通过组合方法,您是否只是指在最适合自己的地方使用每种方法...如果只有一个回显,请使用它...如果它是一个复杂的 HTML 块突破...如果突破让我难以阅读代码,那么不。那种东西?
  • 过早的优化是万恶之源。区别在于解析速度可以忽略不计,上下文切换非常昂贵。所以“更快”取决于您要输出的“文本”数量。相反,您应该关注可读性/可维护性。
  • PHP 本身就是一个很棒的模板引擎。对自己严格一点,只在你的团队板文件中执行 if,else,for 和 foreach。
  • 这就是我使用引号的原因 ;-)
【解决方案2】:

我认为这取决于情况。

您想向浏览器回显多少行? 这些行是否包含 $variable 值? $数组值? 你循环通过数据集吗?等等等等。

对我来说,大部分时间只回显这些台词更可靠。

<?php
   if ( check($something) ) {
      echo "Some variable is: $something<br/>\n";
   } else {
      echo "Some variable is something else!<br/>\n";
   } 
?>

可读性强于:

<?php
   if ( check($something) ) {
?>
Some variable is: <?php echo $something; ?><br/>
<?php
   } else {
?>
Some variable is something else!<br/>
<?php
   } 
?>

使用某些 IDE(或 stackoverflow.comsyntaxhighlighting 例如),它甚至可以更具可读性:

<?php
   if ( check($something) ) {
      echo 'Some variable is: '.$something."<br/>\n";
   } else {
      echo "Some variable is something else!<br/>\n";
   } 
?>

总结:
PHP 为您提供了许多将内容发送到客户端的选项。
“最佳方法”不同于个案。

选择可读性/可维护性最高的方法始终如一地使用它。

【讨论】:

    【解决方案3】:

    如果你说的爆发是指这种事情:

    <?php
         if($somecondition) {
    ?>
    <!-- Some HTML -->
    <?php
         } 
    ?>
    

    那么是的,在大多数情况下,突破更好,因为它更具可读性(许多 IDES 突出显示 HTML 语法,如果在 echo() ed 时带有字符串,则不能这样做)

    【讨论】:

    • 只是想我会添加,通常我通过输入 if 的替代形式来做到这一点: php endif; ?> 只是因为跨块,有时很难匹配大括号。
    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多