== Why is this an issue?

include::../description.adoc[]

This rule also raises on unused protected methods in PHP enumerations. In PHP enumerations private and protected are equivalent because inheritance is not allowed.

=== Noncompliant code example

[source,php]
----
class Foo {
  private function __construct() {}   // Compliant, private empty constructor intentionally used to prevent any direct instantiation of a class.

  public static function doSomething() {
    $foo = new Foo();
    ...
  }

  private function unusedPrivateFunction() {}  // Noncompliant
}

enum ExampleEnum {
  case FIRST_CASE;

  private function unusedPrivateFunction() {} // Noncompliant
  protected function unusedProtectedFunction() {} // Noncompliant
}
----

=== Compliant solution

[source,php]
----
class Foo {
  private function __construct() {}   // Compliant, private empty constructor intentionally used to prevent any direct instantiation of a class.

  public static function doSomething() {
    $foo = new Foo();
  }
}
----

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[]
