【发布时间】:2013-09-23 23:47:10
【问题描述】:
有没有什么办法可以简化这段代码以避免需要 if 来跳转到开关的默认值?
我有一个针对 http 请求的不同身份验证方法的配置表,其中有一个选项可以不将值设置为默认为纯 http 请求:
if(!isset($type)) {
$type = "default";
}
switch ($type) {
case "oauth":
#instantinate an oauth class here
break;
case "http":
#instantinate http auth class here
break;
default:
#do an unprotected http request
break;
}
我对功能没有问题,但我想要一个更简洁的解决方案来打开可选变量,有什么方法可以实现吗?谢谢!
【问题讨论】:
-
请注意,您不需要将其设置为“默认” - 您可以将该代码放在一个函数中并使用语法函数 funcName($type = "") 将其设置为 "" 如果ib 传递了一个空值。
-
有趣的捕获 @andrewb 在代码中几乎有点误导,如果未设置的值设置为文字字符串'default',然后在 switch 中执行落入'default case'。默认值:是不匹配的 switch case 的 php 语法。你也可以将 $type 设置为 "" 或 "barbecuebits"。
-
是的,这就是问题所在。我只需要将 $type 设置为好像没有设置的东西,我最终会遇到错误。直到今天我还不确定我是否知道更好的解决方案..
标签: php switch-statement isset