## Why is this an issue?

The requirement for a final `case default` clause is defensive programming. The clause should either take appropriate action, or contain a suitable comment as to why no action is taken. Even when the `switch` covers all current values of an `enum`, a default case should still be used because there is no guarantee that the `enum` won’t be extended.

### Noncompliant code example

    switch ($param) {  //missing default clause
      case 0:
        do_something();
        break;
      case 1:
        do_something_else();
        break;
    }

### Compliant solution

    switch ($param) {
      case 0:
        do_something();
        break;
      case 1:
        do_something_else();
        break;
      default:
        error();
        break;
    }

## Resources

- CWE - CWE-478 - Missing Default Case in Switch Statement