用PHP处理应用类的更有效方法

用PHP处理应用类的更有效方法,php,jquery,html,Php,Jquery,Html,例如,假设我有3个网页和一个functions.php文件 index.php shop.php contact.php functions.php 在每个页面上都应该有一个导航 <nav> <ul> <li class=""> <a href="#">Home</a> </li> <li class=""> <a href="#">Shop</a> </li

例如,假设我有3个网页和一个functions.php文件

  • index.php
  • shop.php
  • contact.php
  • functions.php
在每个页面上都应该有一个导航

<nav>
  <ul>
    <li class=""> <a href="#">Home</a> </li>
    <li class=""> <a href="#">Shop</a> </li>
    <li class=""> <a href="#">Contact</a> </li>
  </ul>
</nav>
我宁愿使用一个函数将导航代码输出到页面上,并让它自动将
.active
类设置在正确的
  • 上,这取决于在每个页面上手动设置的当前$page\u id变量,而不是在每个页面上放置导航。索引=1,车间=2,联系人=3

    Index.php的示例:

    <?php $page_id=1; ?>
    <!DOCTYPE html>
    <head> 
    etc....
    
    Functions.php

    <?php getNavigation($id) {
    
     switch ($id) {
         case 1:
             echo "
                 <li class="active"> <a href="#">Home</a> </li>
                 <li class=""> <a href="#">Shop</a> </li>
                 <li class=""> <a href="#">Contact</a> </li>
                 ";
             break;
         case 2:
             echo "
                 <li class=""> <a href="#">Home</a> </li>
                 <li class="active"> <a href="#">Shop</a> </li>
                 <li class=""> <a href="#">Contact</a> </li>
                 ";
             break;
         case 3:
             echo "
                 <li class=""> <a href="#">Home</a> </li>
                 <li class=""> <a href="#">Shop</a> </li>
                 <li class="active"> <a href="#">Contact</a> </li>
                 ";
             break;
         default:
             echo "
                 <li class="active"> <a href="#">Home</a> </li>
                 <li class=""> <a href="#">Shop</a> </li>
                 <li class=""> <a href="#">Contact</a> </li>
                 ";
             break;
           }//end of switch
    
    }//end of getNavigation ?>
    
    
    
    我想知道的是,是否有更“干净”和更灵活/有效的方法来用更少的代码实现相同的结果?我更愿意使用纯PHP而不是像jQuery这样的东西来实现这一点


    由于这只是模拟数据,正如您可以想象的那样,由于可能的页面数量,switch语句将变得越来越大。

    您可以使用
    assoc\u数组中的页面URL
    ,并与
    $\u服务器['REQUEST\u URI']进行比较。

    <?php
    function activeClass ($href) {
       if ($_SERVER['REQUEST_URI'] == $href) {
           return "active";
       }
    }
    $hrefs = array (
       "/home" => "Home Page",
       "/shop" => "Shop",
       "/contact" => "Contact",
    );
    ?>
    
    <?php foreach($hrefs as $href=>$text): ?>
        <li class="<?=activeClass($href) >">
            <a href="<?=$href>">
              <?=$text ?>
            </a>
        </li>
    <?php endforeach; // all hrefs ?>
    
    
    
    <?php getNavigation($id) {
    
     switch ($id) {
         case 1:
             echo "
                 <li class="active"> <a href="#">Home</a> </li>
                 <li class=""> <a href="#">Shop</a> </li>
                 <li class=""> <a href="#">Contact</a> </li>
                 ";
             break;
         case 2:
             echo "
                 <li class=""> <a href="#">Home</a> </li>
                 <li class="active"> <a href="#">Shop</a> </li>
                 <li class=""> <a href="#">Contact</a> </li>
                 ";
             break;
         case 3:
             echo "
                 <li class=""> <a href="#">Home</a> </li>
                 <li class=""> <a href="#">Shop</a> </li>
                 <li class="active"> <a href="#">Contact</a> </li>
                 ";
             break;
         default:
             echo "
                 <li class="active"> <a href="#">Home</a> </li>
                 <li class=""> <a href="#">Shop</a> </li>
                 <li class=""> <a href="#">Contact</a> </li>
                 ";
             break;
           }//end of switch
    
    }//end of getNavigation ?>
    
    <?php
    function activeClass ($href) {
       if ($_SERVER['REQUEST_URI'] == $href) {
           return "active";
       }
    }
    $hrefs = array (
       "/home" => "Home Page",
       "/shop" => "Shop",
       "/contact" => "Contact",
    );
    ?>
    
    <?php foreach($hrefs as $href=>$text): ?>
        <li class="<?=activeClass($href) >">
            <a href="<?=$href>">
              <?=$text ?>
            </a>
        </li>
    <?php endforeach; // all hrefs ?>