哪个显示活动菜单项更快?切换+一堆回声或一堆if语句?

时间:2012-12-05 16:56:42

标签: php if-statement menu switch-statement

还是有更好的方法吗?

切换+一堆回声:

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个不同的菜单项,所以我想知道哪种方式最有效,或者是否有更好的方法。

提前谢谢!

2 个答案:

答案 0 :(得分:4)

我认为速度应与此决定无关,因为您最多只谈论微优化。

为代码可读性和可维护性做最好的事情。在我看来,我倾向于更倾向于使用switch语句的方法,因为对我而言,这使得显示逻辑与实际显示之间的分离更加清晰。

答案 1 :(得分:1)

我会选择效果更差的解决方案:对象。我创建了一个类,所以我可以这样定义菜单:

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

确切的代码应该不难理解:带有items的私有数组和用于封装渲染的html()方法。