== Why is this an issue?

include::../description.adoc[]

=== Noncompliant code example

[source,php]
----
switch ($myVariable) {
  case 1:  
    foo();
    break;
  case 2:  // Both 'doSomething()' and 'doSomethingElse()' will be executed. Is it on purpose ?
    do_something();
  default:  
    do_something_else();
   break;
}
----

=== Compliant solution

[source,php]
----
switch ($myVariable) {
  case 1:  
    foo();
    break;
  case 2:  
    do_something();
    break;
  default:  
    do_something_else();
   break;
}
----

=== Exceptions

This rule is relaxed in following cases:


[source,php]
----
switch ($myVariable) {
  case 0:                  // Empty case used to specify the same behavior for a group of cases.
  case 1:  
    do_something();
    break;
  case 2:                  // Use of continue statement
    continue;
  case 3:                  // Case includes a jump statement (exit, return, break &etc)
    exit(0);
  case 4:
    echo 'Second case, which falls through';
    // no break        <- comment is used when fall-through is intentional in a non-empty case body
  default:                 // For the last case, use of break statement is optional 
    doSomethingElse();
}
----

include::../see.adoc[]

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]

endif::env-github,rspecator-view[]
