首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php工具/网站中设计导航?

如何在php工具/网站中设计导航?
EN

Stack Overflow用户
提问于 2016-01-03 09:02:33
回答 4查看 142关注 0票数 2

我正在用PHP设计一个半基本的工具,我有更多的经验服务器端,而不是PHP。

我的工具包含10-15页,我使用$_GET参数在它们之间进行导航。

在我的代码中,有许多if语句如下所示:

代码语言:javascript
复制
if(isset[param1] && !isset[param2] && .....&& !isset[paramN]){
    // code
}

你会同意我的观点,这很丑,对吧?

这是PHP中的“我们是如何做到的”吗?或者在PHP网站中是否有某种导航的设计模式/功能?

编辑:更清楚的是,我想知道的是:设计导航的正确方法是使用大量的$_GET变量吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-03 10:02:23

实际上,这个问题的解决方案有点复杂,乍看之下可能有点复杂。您需要为此实现一个处理程序,因为您正在寻找一种处理GET参数和调用代码片段的最干净的方法。

在您的示例中,您的最终API应该如下所示(因为您要求的是设计,而不是用于实现):

代码语言:javascript
复制
$nav = new Nav($_GET);
$nav->whenSet('param1', 'param2')->andNotSet('param3')->then(function(){

});

$nav->whenSet('param3')->andNotSet('param1', 'param2')->then(function(){

});

// Or a simpler and shorter way
$nav->register($existingKeys, $nonExistingKeys, function(){

});

另一个选项是使用路由机制。大多数PHP框架都提供了这种功能。它们都支持可选的路由片段,因此您只能处理定义一个路由路径的参数,比如这个/page/? (?-意思是可选的)。

票数 1
EN

Stack Overflow用户

发布于 2016-01-03 09:22:20

为了避免一个巨大的if else语句,请尝试使用switch语句:

代码语言:javascript
复制
$param1 = 'something';

switch (true){

    case isset($param1):
    echo "PARAM 1 is set";
    break;

    case isset($param2):
    echo "PARAM 2 is set";
    break;

    default:
    echo "None set";

}

要回答您的编辑-是的,您可以使用_GET变量进行导航,这是正常的。

票数 2
EN

Stack Overflow用户

发布于 2016-01-03 09:20:08

这是我的建议:在数组中添加条件,而不是使用in_array()

代码语言:javascript
复制
echo in_array($yourVar, array('abc', 'def', 'hij', 'klm', 'nop'))
      ? True 
      : false;

更新:

代码语言:javascript
复制
$get = "abc";
$navigation = array(
"abc"=>"yourneed",
"def"=>"yourneed2",
"ghi"=>"yourneed3",
);

foreach($navigation as $key => $value){
if($key == $get){
echo $value;
}
}

还有一个解决方案,你也可以定义路线。与CI和YII相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34574883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档