还是有更好的方法吗?
切换+一堆回声:
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个不同的菜单项,所以我想知道哪种方式最有效,或者是否有更好的方法。
提前谢谢!
答案 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()方法。