是否有任何方法可以简化此代码,以免需要跳过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;
}
我在功能上没有问题,但是我想要一个更清洁的解决方案来打开可选变量,有什么方法可以实现?谢谢!
您无需将变量设置为“默认”。如果未设置变量或变量的值与所有其他定义的情况不同,则将执行默认情况。但是请记住:如果未设置变量,而您在开关中使用了该变量,则会收到通知“ Notice:Undefined variable”。因此,如果您不想禁用通知,则必须检查变量是否已设置。
只是
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上就足够了
如果您要简化它而不通知您。尝试以下操作:
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;
}
}
default
案例是一个包罗万象的案例,如果没有找到前面的案例,因此无需检查变量是否已设置并将其分配给"default"
。
对于switch语句,默认意味着未列出该值...因此您的$ 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";
}
缺少半冒号。