0

还是有更好的方法?

开关+一堆回声:

switch($currentpage) {
case 'index.php':
    $indexclass=' active';
    $otherpageclass='';
    break;
case 'otherpage.php':
    $indexclass='';
    $otherpageclass=' active';
    break;
}

然后,在 li 类中,我将简单地回显 $indexclass 用于索引和 $otherpageclass 用于其他页面。

另一种选择是只设置 $currentpage 变量并执行以下操作:

<li class="<?php if($currentpage='index.php'){echo ' active';}?>">whatever</li>
<li class="<?php if($currentpage='otherpage.php'){echo ' active';}?>">whatever</li>

显然,我的网站比这大得多,可能会有大约 30 个不同的菜单项,所以我想知道哪种方式最有效,或者是否有更好的方式。

先感谢您!

4

2 回答 2

4

我认为速度应该与这个决定无关,因为你充其量是在谈论微优化。

做最有利于代码可读性和可维护性的事情。在我看来,我倾向于更倾向于使用 switch 语句的方法,因为对我来说,这可以更清晰地分离显示逻辑和实际显示。

于 2012-12-05T17:00:31.120 回答
1

我会选择一个性能更差的解决方案:对象。我会创建一个类,以便能够以这种方式定义菜单:

$menu = new Menu($currentpage);
$menu->addItem('index.php', 'Home');
$menu->addItem('otherpage.php', 'Other Page');
echo $menu->html();

确切的代码应该不难弄清楚:一个带有项目的私有数组和一个 html() 方法来封装渲染。

于 2012-12-05T17:06:50.977 回答