2011-05-13 198 views
1

我听说通过PHP回显动态HTML内容是一种不好的做法。但是,如果你需要它,还有什么替代方案,比如f.e.一个网站上的导航菜单,每个页面都重复一次?通过PHP动态显示HTML内容

+0

你在哪里听说这是不好的做法? – 2011-05-13 10:18:40

回答

4

我怀疑这是为了反对在您的PHP脚本中“硬编码”视图的建议,而是通过引入类似于MVC方法的方式分离您的担忧。代码的可维护性和清晰度方面的收益是显着的,在这方面这是一个很好的建议。

虽然这只是一个抽象。在某些时候,PHP必须将HTML输出到浏览器。因此,输出动态HTML内容是PHP不可或缺的组成部分,但有更好更好的方法,并且在echo语句中对HTML字符串进行硬编码通常不是实现它的最佳方式。引入模板引擎和单独的视图和业务逻辑,你可能会变得更好。

6

这就是PHP存在的原因。

您听错了。

+0

好吧,我的意思是像功能菜单(){echo'这里的一些HTML'的结构; } 你说这样的事情很好? =) – Arnthor 2011-05-13 10:21:57

+0

@Nordvind:从PHP输出HTML都有优先和不鼓励的方法。但是,除此之外,事实是,PHP旨在以这种或那种方式来执行此操作。 – 2011-05-13 13:33:19

+0

@Nordvind:如果您真的打算询问具体的输出机制_和方法,请编辑您的问题以更具体。 – 2011-05-13 14:51:46

0

它始终是更好地分割演示和脚本,例如,而不是使用代码这样的事情

echo "<title>$title</title>"; 

你可以使用

<title><?php echo $title; ?></title> 

考虑从PHP分裂的html代码,只保留PHP用于返回一些结果而不是实际的html。这样它会更易读IMO。不管你采用哪种方式都不重要,因为PHP是为了返回文本而这就是你正在做的事情。

3

这不是不好的做法呼应HTML中的内容,这是不好的做法来执行任务,如HTML中的数据的编辑,例如:

<?php 

$query = mysql_query("SELECT * FROM table"); 
echo "<tably>" 
while($row = mysql_fetch_assoc($query)) 
{ 
    ?><tr><td><?php echo $row['item']; ?></td></tr> 
} 
?> 

那丑陋和坏的做法,你会是什么做的是这样的:

<?php 

$data = array(); 
try 
{ 
    $query = mysql_query("SELECT * FROM table"); 
    while($row = mysql_fetch_assoc($query)) 
    { 
     $data[] = $row; 
    } 
}catch(Exception $e) 
{ 
    die("Database Error: " . $e->getMessage()); 
} 

/* 
    * Some more queries and logical data stuff. 
    * Set headers as well 
*/ 

require("main_template.php"); 

,然后在主模板中:

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

我们喜欢在开始时获取页面所需数据的原因是因为如果触发了任何错误,我们可以显示一个不错的页面,而不是将错误扔到内容的一半以内,等等。

0

如果你有像菜单一样的通用代码,你可以把菜单的代码放在一个独立的menu.php文件中,并使用PHP include语句使用菜单代码。这里指的 Php common menu code

肯定你所听到的是不是正确的关于PHP参考这篇文章有什么....