<?php
if(arg(0)=="test"){
echo "code here";
}else{
echo '<div class="item-list">
<?php if (!empty($title)) : ?>
<h3><?php print $title; ?></h3>
<?php endif; ?>
<<?php print $options['type']; ?>>
<?php foreach ($rows as $id => $row): ?>
<li class="<?php print $classes[$id]; ?>"><?php print $row; ?></li>
<?php endforeach; ?>
</<?php print $options['type']; ?>>
</div>
';}
其他回声太长。有没有办法让它变小。
答案 0 :(得分:3)
一般来说,这是错误的代码。您正在使用视图来处理业务逻辑。我肯定会使用一个非常简单的模板系统,如:
Simple and Fast Template Engine
这段代码无法维护,如果它变得更大,甚至可能会读到它。请帮助自己,并从观点中分离逻辑。
从上面的url看一下这个很好的例子,看看如何组织代码:
<?php
require_once('template.php');
$tpl = & new Template('./templates/');
$tpl->set('title', 'User Profile');
$profile = array(
'name' => 'Frank',
'email' => 'frank@bob.com',
'password' => 'ultra_secret'
);
$tpl->set_vars($profile);
echo $tpl->fetch('profile.tpl.php');
?>
The associated template looks like this:
<table cellpadding="3" border="0" cellspacing="1">
<tr>
<td>Name</td>
<td><?=$name;?></td>
</tr>
<tr>
<td>Email</td>
<td><?=$email;?></td>
</tr>
<tr>
<td>Password</td>
<td><?=$password;?></td>
</tr>
</table>
And the parsed output is as follows:
<table cellpadding="3" border="0" cellspacing="1">
<tr>
<td>Name</td>
<td>Frank</td>
</tr>
<tr>
<td>Email</td>
<td>frank@bob.com</td>
</tr>
<tr>
<td>Password</td>
<td>ultra_secret</td>
</tr>
</table>
答案 1 :(得分:1)
我很惊讶代码甚至可以运行。这是一种更好的方法,不使用echo:只需在生成html输出时关闭php解释器。
<?php
if(arg(0)=="test"){
echo "code here";
}else{
?>
<div class="item-list">
<?php if (!empty($title)) : ?>
<h3><?php print $title; ?></h3>
<?php endif; ?>
<<?php print $options['type']; ?>>
<?php foreach ($rows as $id => $row): ?>
<li class="<?php print $classes[$id]; ?>"><?php print $row; ?></li>
<?php endforeach; ?>
</<?php print $options['type']; ?>>
</div>
<?
}
?>
答案 2 :(得分:0)
<?php
$output = "<div class='item-list'>";
if(!empty($title)) $output .= "<h3>".$title."</h3>";
$output .= $options['type'];
foreach($rows as $id => $row) {
$output .= '<li class="' . $classes[$id] . '">' . $row . '</li>';
}
$ouput .= $options['type'] . "</div>";
$output = (arg(0) == "test" ? "code here" : $output);
echo $output;
?>
答案 3 :(得分:-1)
如果你不在PHP和HTML上下文之间切换(也缩进 帮助),它看起来更好:
<?php
if (arg(0)=="test") {
echo "code here";
}
else {
echo '<div class="item-list">'
. @$title
. "<$options[type]>";
foreach ($rows as $id => $row) {
print "<li class=\"{$classes[$id]}\">$row</li>";
}
echo "</$options[type]>";
}