4

is there any way to simplify this code to avoid the need for an if to skip to the switch's default value?

I have a configuration table for different authentication methods for a http request, with an option not to set the value to default to a plain http request:

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;
}

I have no issue with the functionality, but I would like a cleaner solution to switch on an optional variable, is there any way to achieve that? Thanks!

4

4 に答える 4

4

変数を「デフォルト」に設定する必要はありません。変数が設定されていないか、他のすべての定義されたケースと異なる値を持つ場合、default-case が実行されます。ただし、変数が設定されておらず、スイッチで使用すると、「通知: 未定義の変数」という通知が表示されます。したがって、通知を無効にしたくない場合は、変数が設定されているかどうかを確認する必要があります。

于 2013-09-23T23:58:55.023 に答える
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;
    }
}
于 2013-09-24T00:35:33.650 に答える
-1

前のdefaultケースのいずれも見つからない場合、ケースはキャッチオールであるため、変数が設定されているかどうかのチェックとその割り当て"default"は不要です。

于 2013-09-23T23:50:46.890 に答える