用PHP处理应用类的更有效方法
例如,假设我有3个网页和一个functions.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
- 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 ?>