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

时间:2015-03-30 23:32:45

标签: 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>
    <li class=""> <a href="#">Contact</a> </li>
  </ul>
</nav>

并且每个页面都有一个变量集。 index = 1,shop = 2且contact = 3.

示例:

$page_id = 1;

我不是将导航放在每个页面上,而是使用一个函数将导航代码输出到页面上,让它自动将.active类设置为正确的<li>取决于在手动每页上设置的当前$ page_id变量上。 Index = 1,shop = 2且contact = 3.

Index.php示例:

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

在输出导航时,我使用了该功能 导航代码在html中的空间getNaviation($page_id);

<nav>
  <ul><?php getNaviation($page_id); ?></ul>
</nav>

的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 ?>

我想知道的是,是否有更多更清洁的&#39;以更少的代码实现相同结果的更灵活/更有效的方法?我最好只想使用纯PHP而不是像jQuery那样实现这一点。

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

1 个答案:

答案 0 :(得分:2)

您可以使用assoc_array中的网页网址并与$_SERVER['REQUEST_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 ?>