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 に答える