gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:47:02 25 4
gpt4 key购买 nike

为了举例,假设我有 3 个网页和一个 functions.php 文件。

  • index.php
  • shop.php
  • contact.php
  • 函数.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>

并且每个页面上都有一个手动设置的变量。索引 = 1,商店 = 2,联系人 = 3。

示例:

$page_id = 1;

与其将导航放在每个页面上,我宁愿使用一个函数将导航代码输出到页面上并让它自动设置 .active正确上课<li>取决于在每个页面上手动设置的当前 $page_id 变量。索引 = 1,商店 = 2,联系人 = 3。

Index.php 示例:

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

说到输出导航,我用的是函数 getNaviation($page_id);在 html 中导航代码所在的空间。

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

我想知道是否有更多“更干净”和更灵活/有效的方法可以用更少的代码实现相同的结果?我更愿意使用纯 PHP 而不是 jQuery 之类的东西来实现这一点。

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

最佳答案

您可以在 assoc_array 中使用页面 url 并与 $_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 ?>

关于php - 使用 PHP 处理应用类的更有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29358139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com