有没有办法简化这段代码,以避免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;
}
我对功能没有任何问题,但我想要一个更清洁的解决方案来打开一个可选变量,有没有办法实现这一点?谢谢!
答案 0 :(得分:2)
您无需将变量设置为“default”。如果未设置变量或者与所有其他定义的案例具有任何不同的值,则将执行默认情况。 但请记住:如果未设置变量并且您在交换机中使用它,您将收到通知“通知:未定义变量”。因此,如果您不想禁用通知,则必须检查变量是否已设置。
答案 1 :(得分:2)
只是
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;
}
在php> = 7上就足够了
答案 2 :(得分:1)
如果您想在不通知的情况下简化它。请尝试以下方法:
if(!isset($type)) {
#do an unprotected http request
}else{
switch ($type) {
case "oauth":
#instantinate an oauth class here
break;
case "http":
#instantinate http auth class here
break;
}
}
答案 3 :(得分:0)
如果找不到以前的案例,那么default
案例就是一个包罗万象的案例,因此您无需检查变量是否设置并将其分配给"default"
。
答案 4 :(得分:0)
对于switch语句,default表示该值未列出...所以你的$ 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;
}
还要注意以下拼写错误
if(!isset($type)) {
$type = "default"
}
应该是
if(!isset($type)) {
$type = "default";
}
缺少半结肠。