我想知道在尝试构建一个由html和php组成的动态html页面时是否存在标准规则或方法。
例如,大多数时候我会编码我脑子上弹出的任何东西,我的php最终会看起来像这样:
<div class="front-title-blocks">
<div class="table">
<div class="table-row">
<?php while ($wp_query->have_posts()) : $wp_query->the_post();
if( have_rows('table_row') ):
while ( have_rows('table_row') ) : the_row(); ?>
<div class="table-cell">
<?php the_sub_field('single_cell'); ?>
</div>
<?php endwhile; else :
// no row found
endif; ?>
<?php endwhile; ?>
</div>
</div>
</div>
然后我注意到执行完全相同功能的相同代码可以像这样重写。
<?php
while ($wp_query->have_posts()) : $wp_query->the_post();
function repeaterField(){
$output='';
if( have_rows('table-b-table') ):
while ( have_rows('table_row') ) : the_row();
$output .= "<div class='table-cell'>".get_sub_field('single_cell')."</div>";
endwhile; else : // no row found
endif;
return $output;
}
$output = "<div class='front-title-blocks'>
<div class='table'>
<div class='table-row'>".repeaterField()."</div>
</div>
</div>";
endwhile;
echo $output;
?>
我注意到的不同之处:
•第一个示例有多个打开和关闭的php标记,可以在html和php之间不断切换。
•第二个示例倾向于使用php,并且可以使用变量轻松回显。
•第二个例子需要更长的时间来构建和重新排列。
•为了安排起见,我觉得第二个更有组织但是我注意到第一个例子更容易阅读。
任何建议都将不胜感激。
答案 0 :(得分:1)
第一种方法很好。第二个是坏主意。
<?php ?>
内的所有代码都会发送给PHP进行解释。这意味着您的网站速度较慢。因此,不要无任何理由回复HTML标记。
答案 1 :(得分:1)
您可以尝试使用像Twig这样的模板引擎来生成服务器端页面。
例如,Twig允许您这样做:
{{ var }}
而不是:
<?php echo $var ?>
您也可以这样做:
<h1>Members</h1>
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% endfor %}
</ul>
gogle: php template engine - 用于其他模板引擎
答案 2 :(得分:1)
第一个选项是'更好'(或者我更喜欢这个)因为各种原因:因为它更具可读性,使用代码编辑器,你可以使用syntaxis帮助和自动完成,页面加载速度更快。
要考虑的另一件事是你将在第二种方法中处理可能导致错误的双引号和简单引号:
echo "<div id='a'"+$var+"'...>";
但是这两个选项是有效的。
还有其他问题:Outputting HTML with echo considered bad practice in PHP?
答案 3 :(得分:1)
还有第三种选择:
<html>
....
<body>
....
<?php
while ($wp_query->have_posts()) : $wp_query->the_post();
if (have_rows('table-b-table')):
while (have_rows('table_row')) : the_row();
$var1 = get_sub_field('single_cell');
include 'template.php';
endwhile;
endif;
endwhile
?>
...
</body></html>
<强>的template.php 强>
<div class='front-title-blocks'>
<div class='table'>
<div class='table-row'>
<div class='table-cell'>
<?= $var1 ?>
</div>
</div>
</div>
</div>
我个人更喜欢这个,因为它最小化了PHP标签中的HTML代码。
答案 4 :(得分:1)
Yess第一个选择很好,跟着它去吧
但我们有一些短代码标签 你应该在php.ini文件中为短代码做设置