我正在从一本书中学习PHP。作者使用echo
输出HTML。起初我以为这就是它应该如何完成的,但后来我选择了一本更“先进”的书。第二本书的作者在HTML之间插入PHP代码而不是回声整个事情。如何在大型项目中处理大型Web开发公司?你可以使用其中一种,还是比另一种更容易接受?
以此代码为例:
<?php
//pagination
if ($pages > 1) {
//determine the current page
$current_page = ($start / $display) + 1;
//print out Previous Page button
if ($current_page != 1) {
?>
<div class="pages"><strong><a href="view_users.php?s=<?php echo ($start - $display); ?>&p=<?php echo $pages; ?>"> < </a></strong></div>
<?php
}
//print the page numbers
for ($i = 1; $i <= $pages; $i++) {
if ($i == $current_page) {
?>
<div class="pages active"><span> <?php echo $i; ?> </span></div>
<?php
}
else {
?>
<div class="pages"><strong><a href="view_users.php?s=<?php echo ($display * ($i - 1)); ?>&p=<?php echo $pages; ?>"> <?php echo $i; ?> </a></strong></div>
<?php
}//end of $i = $current_page conditional
}//end of FOR loop
if ($current_page < $pages) {
?>
<div class="pages"><strong><a href="view_users.php?s=<?php echo ($start + $display); ?>&p=<?php echo $pages; ?>"> > </a></strong></div>
<?php
}
}//end of pagination
include('includes/footer.php');
?>
这是正确的做法,还是我应该使用这样的东西:
echo '<a href="view_users.php?s=' . ($display * ($i - 1)) .
'&p=' . $pages . '&sort=' . $sort . '">' . $i . '</a> ';
我问的原因是因为我发现在使用第二种技术时难以正确对齐HTML,而且我不想在早期养成任何坏习惯。
答案 0 :(得分:4)
第一种方法使您的代码更具可读性。当您需要打印一些少量的html代码时,第二种方法很有用。您也可以使用短打开标签在html标签之间插入您的PHP代码。例如,如果您需要打印URL的语言参数,可以这样做:
<a href="index.php?lang=<?=$lang?>" >A Link</a>
这等于:
<a href="index.php?lang=<?php echo $lang; ?>" >A Link</a>
答案 1 :(得分:1)
我建议一般使用一个好的framework,然后使用一个templating engine来输出页面。这样,您的数据模型,应用程序逻辑和HTML都将保持独立。
答案 2 :(得分:1)
这是一个有点主观的问题,但是:
echo '<a href="view_users.php?s=' . ($display * ($i - 1)) .
'&p=' . $pages . '&sort=' . $sort . '">' . $i . '</a> ';
这个不是很好,因为很快就会难以阅读。这是使用IMO的最糟糕的选择。
这是一个如何改进的演变:
<a
href="view_users.php?s=<?php echo $display * ($i - 1); ?>&p=<?php echo $pages; ?>&sort=<?php echo $sort; ?>">
<?php echo $i; ?>
</a>
<?php
printf('<a href="view_users.php?s=%i&p=%i&sort=%s">%i</a>',
$display * ($i - 1), $pages, $sort, $i);
?>
<?php
$q = http_build_query(array(
's' => $display * ($i - 1),
'p' => $pages,
'sort' => $sort
));
?>
<a href="view_users.php?<?php echo $q; ?>"><?php echo $i; ?></a>
<?php
printf('<a href="view_users.php?%s">%i</a>',
http_build_query(array(
's' => $display * ($i - 1),
'p' => $pages,
'sort' => $sort
)),
$i);
?>
答案 3 :(得分:0)
Paul,您在该代码中看到的是PHP,CSS和HTML的组合。 echo只是意味着在页面上打印,它是一个PHP函数,这就是你用标签看到它的原因。
<?php ?>
这会回答你的问题吗?
此外,PHP和HTML以及CSS不会解析任何空格,因此会进行缩进以增强可读性。我建议你评论你的代码并格式化它,但是你更容易理解。从专业角度来看,请查看W3C验证器以获得正确的代码格式。
答案 4 :(得分:0)
两者都是可以接受的,使用echo作为简短的语句,并完全打破了PHP的长位html。压缩HTML并不重要,当有人检查你的来源时,它看起来很漂亮。
答案 5 :(得分:0)
在函数中包装html生成并构建输出字符串可能是一种很好的做法。这样,您就可以以可读的方式表达复杂的逻辑:
<?php
function get_pagination_html($pages, $start, $display) {
$html = "";
if ($pages <= 1) return $html;
$current_page = ($start / $display) + 1;
if ($current_page != 1) {
$previous = $start - $display;
$html .= "<div class='pages'><strong><a href='view_users.php?s={$previous}&p={$pages}'> < </a></strong></div>";
}
for ($page_number = 1; $page_number <= $pages; $page_number++) {
if ($page_number == $current_page) {
$html .= "<div class='pages active'><span> {$page_number} </span></div>";
} else {
$page_start = $display * ($page_number - 1);
$html .= "<div class='pages'><strong><a href='iew_users.php?s={$page_start}>&p={$pages}'> {$page_number} </a></strong></div>";
}
}
if ($current_page < $pages) {
$next = $start + $display;
$html .= "<div class='pages'><strong><a href='view_users.php?s={$next}&p={$pages}'> > </a></strong></div>";
}
return $html;
}
echo get_pagination_html($pages, $start, $display);
注意它读起来有多容易。您也不需要任何评论,因为变量名称是自解释的